728x90
Computer Science/πŸ”’ Operating System

Computer Science/πŸ”’ Operating System

    [운영체제] IPC(Inter Process Communication) - ν”„λ‘œμ„ΈμŠ€ κ°„ 톡신

    IPC(Inter Process Communication) 독립적인 λ©”λͺ¨λ¦¬ 곡간을 κ°–λŠ” ν”„λ‘œμ„ΈμŠ€ κ°„μ˜ 톡신 기법 ν•œ ν”„λ‘œμ„ΈμŠ€κ°€ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ˜ μžμ›μ„ μ‚¬μš©ν•˜κΈ° μœ„ν•΄ λ™μ‹œμ— μ ‘κ·Ό κ°€λŠ₯ν•œ λ©”λͺ¨λ¦¬ 즉, ν”„λ‘œμ„ΈμŠ€λ“€μ΄ κ³΅μœ ν•˜λŠ” λ©”λͺ¨λ¦¬κ°€ ν•„μš” 컀널 μ˜μ—­μ—μ„œ IPCλΌλŠ” λ‚΄λΆ€ ν”„λ‘œμ„ΈμŠ€ κ°„ 톡신 μ„€λΉ„λ₯Ό 제곡 1. 곡유 λ©”λͺ¨λ¦¬ (Shared Memory) 곡유 λ©”λͺ¨λ¦¬(Shared Memory)κ°€ 데이터 자체λ₯Ό κ³΅μœ ν•˜λ„λ‘ μ„€λΉ„ ν”„λ‘œμ„ΈμŠ€κ°€ 곡유 λ©”λͺ¨λ¦¬ 할당을 컀널에 μš”μ²­ν•˜λ©΄ 컀널은 ν•΄λ‹Ή ν”„λ‘œμ„ΈμŠ€μ— λ©”λͺ¨λ¦¬ 곡간을 ν• λ‹Ή λͺ¨λ“  ν”„λ‘œμ„ΈμŠ€λŠ” 곡유 λ©”λͺ¨λ¦¬μ— μ ‘κ·Όν•  수 있음 Text와 Data μ˜μ—­ 사이 곡유 λ©”λͺ¨λ¦¬ ν¬μΈνŒ… 곡간 (각 ν”„λ‘œμ„ΈμŠ€κ°€ λ©”λͺ¨λ¦¬ μ˜μ—­μ— μ²¨λΆ€λ˜λŠ” 방식) ν”„λ‘œμ„ΈμŠ€ κ°„ Read, Writeλ₯Ό λͺ¨λ‘ ν•„μš”λ‘œ ν•  λ•Œ μ‚¬μš© ..

    [운영체제] PCB와 λ¬Έλ§₯ κ΅ν™˜(Context Switching)

    PCB (Process Control Block) μš΄μ˜μ²΄μ œκ°€ μ‹œμŠ€ν…œ λ‚΄μ˜ ν”„λ‘œμ„ΈμŠ€λ“€μ„ κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄ ν”„λ‘œμ„ΈμŠ€λ§ˆλ‹€ μœ μ§€ν•΄μ•Όν•˜λŠ” 정보듀을 λ‹΄λŠ” 컀널 λ‚΄ 자료ꡬ쑰 컀널 μ£Όμ†Œ κ³΅κ°„μ˜ data μ˜μ—­μ— 쑴재 ν”„λ‘œμ„ΈμŠ€μ˜ 메타 데이터듀이 μ €μž₯λ˜λŠ” κ³³ Process ID Process μƒνƒœ CPU Regiter κ°’ CPU μŠ€μΌ€μ€„λ§ 정보 λ©”λͺ¨λ¦¬ μ‚¬μš©/관리 정보 λ“±λ“± Linked List λ°©μ‹μœΌλ‘œ 관리 PCB μƒμ„±λ§ˆλ‹€ PCB List Head에 μ£Όμ†Œκ°’μœΌλ‘œ μ—°κ²° PCBκ°€ ν•„μš”ν•œ 이유 CPUμ—μ„œλŠ” ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœμ— 따라 주기적으둜 ν”„λ‘œμ„ΈμŠ€λ₯Ό κ΅μ²΄ν•΄μ£ΌλŠ” μž‘μ—…μ΄ ν•„μš”ν•˜λ‹€. 이λ₯Ό λ¬Έλ§₯ κ΅ν™˜(Context Switching)이라고 ν•œλ‹€. λ¬Έλ§₯ κ΅ν™˜ μ‹œ ν˜„μž¬ CPU μƒμ—μ„œ μ‹€ν–‰λ˜κ³  있던 ν”„λ‘œμ„ΈμŠ€μ˜ 정보(λ¬Έλ§₯)을 μžμ‹ μ˜ PCB에 μ €μž₯ν•˜κ³ ..

    [운영체제] μœ μ €λͺ¨λ“œ(User-Mode)와 컀널λͺ¨λ“œ(Kernel-Mode), μΈν„°λŸ½νŠΈ(Interrupt)와 μ‹œμŠ€ν…œμ½œ(System Call)

    μœ μ € λͺ¨λ“œ(User-Mode)와 컀널 λͺ¨λ“œ(Kernel-Mode) μ»€λ„μ—μ„œλŠ” μ€‘μš”ν•œ μžμ›μ„ κ΄€λ¦¬ν•˜κΈ° λ•Œλ¬Έμ— μ‚¬μš©μžκ°€ ν•΄λ‹Ή μžμ›μ— μ‰½κ²Œ μ ‘κ·Όν•˜μ§€ λͺ»ν•˜λ„둝 λ³΄ν˜Έν•˜κΈ° μœ„ν•΄ λ‚˜λ‰¨ μ‹œμŠ€ν…œμ— μ€‘μš”ν•œ 영ν–₯을 λ―ΈμΉ˜λŠ” 연산은 컀널 λͺ¨λ“œμ—μ„œλ§Œ μ‹€ν–‰λ˜λ„λ‘ ν•¨μœΌλ‘œμ¨ ν•˜λ“œμ›¨μ–΄ λ³΄μ•ˆ μœ μ§€ ν”„λ‘œμ„ΈμŠ€κ°€ μ‹€ν–‰λ˜λŠ” λ™μ•ˆ μœ μ € λͺ¨λ“œμ™€ 컀널 λͺ¨λ“œλ₯Ό 반볡적으둜 λ„˜λ‚˜λ“¬ μœ μ € μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ μ‹œμŠ€ν…œ μ„œλΉ„μŠ€λ₯Ό ν˜ΈμΆœν•  λ•Œ μœ μ € λͺ¨λ“œμ—μ„œ 컀널 λͺ¨λ“œλ‘œ μ „ν™˜ μœ μ €/μ‚¬μš©μž λͺ¨λ“œ μ‚¬μš©μžκ°€ μ ‘κ·Όν•  수 μžˆλŠ” μ˜μ—­μ„ μ œν•œμ μœΌλ‘œ 두고 ν”„λ‘œκ·Έλž¨μ˜ μžμ›μ— ν•¨λΆ€λ‘œ μ ‘κ·Όν•˜μ§€ λͺ»ν•˜λ„둝 ν•˜λŠ” λͺ¨λ“œ ν•˜λ“œμ›¨μ–΄ 직접 μ ‘κ·Ό λΆˆκ°€λŠ₯ μ½”λ“œ μž‘μ„±, ν”„λ‘œμ„ΈμŠ€ μ‹€ν–‰ λͺ…λ Ή λ“± μ‹€ν–‰ κ°€λŠ₯ μœ μ € μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ½”λ“œκ°€ μ‹€ν–‰ 컀널 λͺ¨λ“œ λͺ¨λ“  μ‹œμŠ€ν…œ λ©”λͺ¨λ¦¬ λ“± ν•˜λ“œμ›¨μ–΄μ— 직접 μ ‘κ·Ό κ°€λŠ₯ λͺ¨λ“  CPU λͺ…λ Ή..

    [운영체제] 동기/비동기(Sync/Async), λΈ”λ‘œν‚Ή/λ…ΌλΈ”λ‘œν‚Ή(Blocking/Non-Blocking)

    동기/비동기? λΈ”λ‘œν‚Ή/λ…ΌλΈ”λ‘œν‚Ή? 동기와 비동기, λΈ”λ‘œν‚Ήκ³Ό λ…ΌλΈ”λ‘œν‚Ήμ˜ κ°œλ…μ€ μœ μ‚¬ν•˜κ²Œ 느껴질 수 μžˆμ§€λ§Œ μ„œλ‘œ λ°”λ‘œλ³΄λŠ” 관점을 λ‹¬λ¦¬ν•˜κ³  μžˆλ‹€. 동기/λΉ„λ™κΈ°λŠ” 일을 μ²˜λ¦¬ν•˜λŠ” μˆœμ„œ(μ‹œμ )와 κ²°κ³Ό(처리)와 κ΄€λ ¨μžˆλŠ” κ°œλ…μœΌλ‘œ 이전 μž‘μ—… μ’…λ£Œμ™€ λ™μ‹œμ— μ‹œμž‘ν•˜λ©΄ 동기, 그렇지 μ•ŠμœΌλ©΄ λΉ„λ™κΈ°λ‘œ κ΅¬λΆ„ν•œλ‹€. λΈ”λ‘œν‚Ή/λ…ΌλΈ”λ‘œν‚Ήμ€ μ œμ–΄κΆŒκ³Ό κ΄€λ ¨μžˆλŠ” κ°œλ…μœΌλ‘œ ν•¨μˆ˜ 호좜 μ‹œ μ œμ–΄κΆŒμ΄ λ„˜μ–΄κ°€λ©΄ λΈ”λ‘œν‚Ή, 그렇지 μ•Šκ³  μžμ‹ μ˜ 할일을 μ§€μ†ν•˜λ©΄ λ…ΌλΈ”λ‘œν‚ΉμœΌλ‘œ κ΅¬λΆ„ν•œλ‹€. 동기(Synchronous) μž‘μ—…μ„ λ™μ‹œμ— μˆ˜ν–‰ν•˜κ±°λ‚˜ λ™μ‹œμ— λλ‚˜κ±°λ‚˜ λλ‚˜λŠ” λ™μ‹œμ— μ‹œμž‘ν•¨ μš”μ²­ μž‘μ—…μ˜ μ’…λ£Œ μ‹œμ κ³Ό λ‚˜λ¨Έμ§€ μž‘μ—… μš”μ²­ μ‹œμž‘ μ‹œμ μ˜ λ™μ‹œμ„± ν˜ΈμΆœν•œ ν•¨μˆ˜μ˜ μž‘μ—… μ™„λ£Œ 응닡이 ν•„μš”ν•΄ μž‘μ—… μ™„λ£Œ μ—¬λΆ€λ₯Ό κ³„μ†ν•΄μ„œ λ¬»κ±°λ‚˜ 응닡을 κΈ°λ‹€λ¦Ό ν˜ΈμΆœν•œ ν•¨μˆ˜μ˜ μž‘μ—… μ™„λ£Œ 여뢀에 λŒ€ν•΄..

    [운영체제] ν”„λ‘œμ„ΈμŠ€ λ©”λͺ¨λ¦¬ ꡬ쑰 - Code, Data, Heap, Stack

    ν”„λ‘œμ„ΈμŠ€ λ©”λͺ¨λ¦¬ ꡬ쑰 Code(Text) μ‚¬μš©μžκ°€ μž‘μ„±ν•œ ν”„λ‘œκ·Έλž¨ μ½”λ“œκ°€ μ €μž₯λ˜λŠ” 곡간 μˆ˜ν–‰ν•  수 μžˆλŠ” 기계어 λͺ…λ Ήμ˜ ν˜•νƒœλ‘œ λ³€ν™˜λ˜μ–΄ μ €μž₯ 변경이 λΆˆκ°€λŠ₯ν•œ Read-Only Data μ „μ—­ λ³€μˆ˜λ‚˜ static λ³€μˆ˜ λ“± ν”„λ‘œκ·Έλž¨μ΄ μ‚¬μš©ν•˜λŠ” 데이터λ₯Ό μ €μž₯ν•˜λŠ” 곡간 μ „μ—­ λ³€μˆ˜λ‚˜ static λ³€μˆ˜λ₯Ό μ°Έμ‘°ν•œ μ½”λ“œ 뢀뢄은 컴파일이 μ™„λ£Œλ˜λ©΄ data μ˜μ—­ λ‚΄μ˜ ν•΄λ‹Ή μ£Όμ†Œκ°’μ„ 가리킀도둝 변경됨 μ „μ—­ λ³€μˆ˜κ°€ μ €μž₯λ˜λŠ” 곡간은 Data μ˜μ—­κ³Ό BSS μ˜μ—­μœΌλ‘œ λ‚˜λ‰¨ Data: μ΄ˆκΈ°ν™” 된 μ „μ—­ λ³€μˆ˜ BSS: μ΄ˆκΈ°ν™” λ˜μ§€ μ•Šμ€ μ „μ—­ λ³€μˆ˜ 컴파일 μ‹œ 데이터가 μ €μž₯되며 ν”„λ‘œκ·Έλž¨ μ’…λ£Œ μ‹œ μ‚­μ œλ¨ μ „μ—­ λ³€μˆ˜μ˜ 값이 변경될 수 μžˆμœΌλ―€λ‘œ Read-Write Heap ν”„λ‘œκ·Έλž˜λ¨Έκ°€ ν•„μš”ν•  λ•Œλ§ˆλ‹€ μ‚¬μš©ν•  수 μžˆλŠ” λ©”λͺ¨λ¦¬ 곡간 λ™μ μœΌλ‘œ λ©”λͺ¨λ¦¬λ₯Ό ν• ..

    [운영체제] ν”„λ‘œμ„ΈμŠ€μ™€ μŠ€λ ˆλ“œ, λ©€ν‹° ν”„λ‘œμ„ΈμŠ€μ™€ λ©€ν‹° μŠ€λ ˆλ“œ

    ν”„λ‘œμ„ΈμŠ€(Process) ν”„λ‘œκ·Έλž¨μ΄ λ©”λͺ¨λ¦¬λ‘œ μ˜¬λΌμ™€ μš΄μ˜μ²΄μ œλ‘œλΆ€ν„° CPUλ₯Ό ν• λ‹Ήλ°›κ³  μ‹€ν–‰λ˜κ³  μžˆλŠ” μƒνƒœ CPU μŠ€μΌ€μ€„λ§μ˜ λŒ€μƒμ΄ λ˜λŠ” μž‘μ—…μ˜ 흐름을 지칭 ν•˜λ‚˜μ˜ ν”„λ‘œκ·Έλž¨(μ• ν”Œλ¦¬μΌ€μ΄μ…˜)은 ν•˜λ‚˜ μ΄μƒμ˜ ν”„λ‘œμ„ΈμŠ€λ₯Ό 가짐 각 ν”„λ‘œμ„ΈμŠ€λŠ” λ³„λ„μ˜ μ£Όμ†Œ κ³΅κ°„μ—μ„œ μ‹€ν–‰λ˜κ³  ν”„λ‘œμ„ΈμŠ€λΌλ¦¬ 지원을 κ³΅μœ ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ˜ λ³€μˆ˜λ‚˜ μžλ£Œκ΅¬μ‘°μ— μ ‘κ·Όν•  수 μ—†μŒ ν”„λ‘œμ„ΈμŠ€λŠ” 각각 λ…λ¦½λœ λ©”λͺ¨λ¦¬ μ˜μ—­(Code, Data, Stack, Heap)을 ν• λ‹Ή λ°›μŒ μŠ€λ ˆλ“œ(Thread) ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œ μ‹€ν–‰λ˜λŠ” νλ¦„μ˜ λ‹¨μœ„ ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€λŠ” ν•˜λ‚˜ μ΄μƒμ˜ μŠ€λ ˆλ“œλ₯Ό 가짐 각각의 μŠ€λ ˆλ“œλŠ” ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œ Stack μ˜μ—­λ§Œ λ”°λ‘œ ν• λ‹Ήλ°›κ³  Code, Data, Heap μ˜μ—­μ€ μ„œλ‘œ κ³΅μœ ν•¨ λ©€ν‹°ν”„λ‘œμ„ΈμŠ€(Multi-Process) ν•˜λ‚˜μ˜ μ• ν”Œ..

728x90