λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

πŸ–₯ CS/운영체제

(12)
[운영체제] ꡐ착 μƒνƒœ (Deadlock) λ³Έ κ²Œμ‹œκΈ€μ€ KOCW μ΄ν™”μ—¬μžλŒ€ν•™κ΅ 반효경 κ΅μˆ˜λ‹˜μ˜ κ°•μ˜λ₯Ό λ“£κ³ , 책을 μ°Έκ³ ν•˜μ—¬ μ •λ¦¬ν•œ λ‚΄μš©μž…λ‹ˆλ‹€. κ²Œμ‹œκΈ€μ— ν¬ν•¨λ˜λŠ” 이미지 μžλ£ŒλŠ” κ°•μ˜μ— ν¬ν•¨λœ κ°•μ˜ μžλ£Œμž…λ‹ˆλ‹€. ꡐ착 μƒνƒœ(Deadlock)λž€? 일련의 ν”„λ‘œμ„ΈμŠ€λ“€μ΄ μ„œλ‘œκ°€ 가진 μžμ›(resource)을 기닀리며 block된 μƒνƒœλ₯Ό κ΅μ°©μƒνƒœ(deadlock)이라고 ν•©λ‹ˆλ‹€. μžμ›(resource) ν•˜λ“œμ›¨μ–΄, μ†Œν”„νŠΈμ›¨μ–΄ 등을 ν¬ν•¨ν•˜λŠ” κ°œλ… ex) I/O device, CPU cycle, memory space, semaphore λ“± ν”„λ‘œμ„ΈμŠ€κ°€ μžμ›μ„ μ‚¬μš©ν•˜λŠ” 절차 Request(μš”μ²­) -> Allocate(νšλ“) -> Use(μ‚¬μš©) -> Release(λ°˜λ‚©) Deadlock λ°œμƒμ˜ 4가지 쑰건 ꡐ착 μƒνƒœκ°€ λ°œμƒν•  μ‘°κ±΄μ—λŠ” λ„€ 가지가 μžˆμŠ΅λ‹ˆλ‹€. λ„€ 가지 쑰건 ..
[운영체제] ν”„λ‘œμ„ΈμŠ€ 동기화 (2/2) λ³Έ κ²Œμ‹œκΈ€μ€ KOCW μ΄ν™”μ—¬μžλŒ€ν•™κ΅ 반효경 κ΅μˆ˜λ‹˜μ˜ κ°•μ˜λ₯Ό λ“£κ³ , 책을 μ°Έκ³ ν•˜μ—¬ μ •λ¦¬ν•œ λ‚΄μš©μž…λ‹ˆλ‹€. κ²Œμ‹œκΈ€μ— ν¬ν•¨λ˜λŠ” 이미지 μžλ£ŒλŠ” κ°•μ˜μ— ν¬ν•¨λœ κ°•μ˜ μžλ£Œμž…λ‹ˆλ‹€. Synchronizationκ³Ό κ΄€λ ¨λœ 고전적인 문제 Bounded-Buffer Problem (Producer-Consumer Problem) Readers and Writers Problem Dining-Philosophers Problem 1. Bounded-Buffer Problem(Producer-Consumer Problem) μ‹œλ‚˜λ¦¬μ˜€ 두 μ’…λ₯˜μ˜ ν”„λ‘œμ„ΈμŠ€ 쑴재 1. μƒμ‚°μž(producer) ν”„λ‘œμ„ΈμŠ€: 데이터 μƒμ‚°ν•΄μ„œ 곡유 버퍼에 λ„£μŒ 2. μ†ŒλΉ„μž(consumer) ν”„λ‘œμ„ΈμŠ€: 데이터λ₯Ό λ²„νΌμ—μ„œ κΊΌλ‚΄κ°€μ„œ μ†ŒλΉ„ λ°œμƒ κ°€λŠ₯ν•œ 문제 1. lo..
[운영체제] ν”„λ‘œμ„ΈμŠ€ 동기화 (1/2) λ³Έ κ²Œμ‹œκΈ€μ€ KOCW μ΄ν™”μ—¬μžλŒ€ν•™κ΅ 반효경 κ΅μˆ˜λ‹˜μ˜ κ°•μ˜λ₯Ό λ“£κ³ , 책을 μ°Έκ³ ν•˜μ—¬ μ •λ¦¬ν•œ λ‚΄μš©μž…λ‹ˆλ‹€. κ²Œμ‹œκΈ€μ— ν¬ν•¨λ˜λŠ” 이미지 μžλ£ŒλŠ” κ°•μ˜μ— ν¬ν•¨λœ κ°•μ˜ μžλ£Œμž…λ‹ˆλ‹€. 데이터 μ ‘κ·Ό νŒ¨ν„΄ ν”„λ‘œμ„ΈμŠ€ 동기화에 λŒ€ν•΄ μ•Œμ•„λ³΄κΈ°μ— μ•žμ„œ 컴퓨터 μ‹œμŠ€ν…œ λ‚΄μ—μ„œ 데이터가 μ ‘κ·Όλ˜λŠ” νŒ¨ν„΄μ— λŒ€ν•΄ λ¨Όμ € μ•Œμ•„λ΄…μ‹œλ‹€. 데이터가 μ €μž₯λ˜μ–΄μžˆλŠ” μœ„μΉ˜μ—μ„œ μ½μ–΄μ™€μ„œ 연산을 ν•˜κ³  μˆ˜μ •λœ κ²°κ³Όλ₯Ό λ‹€μ‹œ 데이터에 λ°˜μ˜μ„ ν•˜κ³ , 데이터가 μ €μž₯λ˜λŠ” Storage BoxλŠ” 곡유되기 λ•Œλ¬Έμ— 동기화(synchronization) λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€. 곡유 데이터(shared data)의 λ™μ‹œ 접근은 λ°μ΄ν„°μ˜ 뢈일치 문제λ₯Ό λ°œμƒμ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€. κ·Έλ ‡κΈ° λ•Œλ¬Έμ— λ°μ΄ν„°μ˜ 일관성(consistency) μœ μ§€λ₯Ό μœ„ν•΄μ„œλŠ” ν˜‘λ ₯ ν”„λ‘œμ„ΈμŠ€ κ°„μ˜ μ‹€ν–‰ μˆœμ„œλ₯Ό μ •ν•΄μ£ΌλŠ” 메컀..
[운영체제] CPU μŠ€μΌ€μ€„λ§ λ³Έ κ²Œμ‹œκΈ€μ€ KOCW μ΄ν™”μ—¬μžλŒ€ν•™κ΅ 반효경 κ΅μˆ˜λ‹˜μ˜ κ°•μ˜λ₯Ό λ“£κ³ , 책을 μ°Έκ³ ν•˜μ—¬ μ •λ¦¬ν•œ λ‚΄μš©μž…λ‹ˆλ‹€. κ²Œμ‹œκΈ€μ— ν¬ν•¨λ˜λŠ” 이미지 μžλ£ŒλŠ” κ°•μ˜μ— ν¬ν•¨λœ κ°•μ˜ μžλ£Œμž…λ‹ˆλ‹€. CPU μŠ€μΌ€μ€„λ§μ΄λž€? λͺ¨λ“  ν”„λ‘œμ„ΈμŠ€λŠ” CPUλ₯Ό ν•„μš”λ‘œ ν•˜κ³ , λ¨Όμ € CPUλ₯Ό μ‚¬μš©ν•˜κ³  μ‹Άμ–΄ ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ ν”„λ‘œμ„ΈμŠ€λ“€μ—κ²Œ κ³΅μ •ν•˜κ³  ν•©λ¦¬μ μœΌλ‘œ CPU μžμ›μ„ ν• λ‹Ήν•˜κΈ° μœ„ν•΄ μš΄μ˜μ²΄μ œλŠ” μ–΄λ–€ ν”„λ‘œμ„ΈμŠ€μ— CPUλ₯Ό 할당할지, μ–΄λ–€ ν”„λ‘œμ„ΈμŠ€λ₯Ό κΈ°λ‹€λ¦¬κ²Œ 할지λ₯Ό κ²°μ •ν•©λ‹ˆλ‹€. μ΄λ ‡κ²Œ μš΄μ˜μ²΄μ œκ°€ ν”„λ‘œμ„ΈμŠ€λ“€μ—κ²Œ κ³΅μ •ν•˜κ³  ν•©λ¦¬μ μœΌλ‘œ CPU μžμ›μ„ λ°°λΆ„ν•˜λŠ” 것을 CPU μŠ€μΌ€μ€„λ§(CPU Scheduling)이라고 ν•©λ‹ˆλ‹€. ν”„λ‘œκ·Έλž¨μ˜ μ‹€ν–‰ 단계 (CPU and I/O Bursts) 합리적이고 효율적인 CPU μžμ› 배뢄을 μœ„ν•΄ μ–΄λ–€ ν”„λ‘œμ„ΈμŠ€μ—κ²Œ CPUλ₯Ό λ¨Όμ € ν• λ‹Ήν•˜λŠ” 것이..
[운영체제] μŠ€λ ˆλ“œ (Thread) λ³Έ κ²Œμ‹œκΈ€μ€ KOCW μ΄ν™”μ—¬μžλŒ€ν•™κ΅ 반효경 κ΅μˆ˜λ‹˜μ˜ κ°•μ˜λ₯Ό λ“£κ³  μ •λ¦¬ν•œ λ‚΄μš©μž…λ‹ˆλ‹€. κ²Œμ‹œκΈ€μ— ν¬ν•¨λ˜λŠ” 이미지 μžλ£ŒλŠ” κ°•μ˜μ— ν¬ν•¨λœ κ°•μ˜ μžλ£Œμž…λ‹ˆλ‹€. μŠ€λ ˆλ“œ(Thread) μŠ€λ ˆλ“œλŠ” ν”„λ‘œμ„ΈμŠ€λ₯Ό κ΅¬μ„±ν•˜λŠ” μ‹€ν–‰ λ‹¨μœ„μž…λ‹ˆλ‹€. (lightweight process라고도 λΆˆλ¦½λ‹ˆλ‹€) ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€λŠ” μ—¬λŸ¬ 개의 μŠ€λ ˆλ“œλ₯Ό κ°€μ§ˆ 수 있으며(μ΅œμ†Œ ν•˜λ‚˜λŠ” 가짐), μŠ€λ ˆλ“œλ₯Ό μ΄μš©ν•˜λ©΄ ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€μ—μ„œ μ—¬λŸ¬ 뢀뢄을 λ™μ‹œμ— μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μŠ€λ ˆλ“œμ˜ ꡬ성 Thread의 ꡬ성: CPU μˆ˜ν–‰κ³Ό κ΄€λ ¨λœ 정보(곡유 ν•˜μ§€ μ•ŠλŠ” λΆ€λΆ„) Program Counter Register set Stack space Threadκ°„ κ³΅μœ ν•˜λŠ” μ˜μ—­ (= task) λ©”λͺ¨λ¦¬ λ‚΄ Code, Data μ˜μ—­ (= λ©”λͺ¨λ¦¬ μ£Όμ†Œ 곡간) OS resources ..
[운영체제] ν”„λ‘œμ„ΈμŠ€ 관리 λ³Έ κ²Œμ‹œκΈ€μ€ KOCW μ΄ν™”μ—¬μžλŒ€ν•™κ΅ 반효경 κ΅μˆ˜λ‹˜μ˜ κ°•μ˜λ₯Ό λ“£κ³ , 책을 μ°Έκ³ ν•˜μ—¬ μ •λ¦¬ν•œ λ‚΄μš©μž…λ‹ˆλ‹€. κ²Œμ‹œκΈ€μ— ν¬ν•¨λ˜λŠ” 이미지 μžλ£ŒλŠ” κ°•μ˜μ— ν¬ν•¨λœ κ°•μ˜ μžλ£Œμž…λ‹ˆλ‹€. ν”„λ‘œμ„ΈμŠ€ 계측ꡬ쑰 ν”„λ‘œμ„ΈμŠ€λŠ” μ‹€ν–‰ 도쀑 μ‹œμŠ€ν…œ ν˜ΈμΆœμ„ 톡해 λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λ₯Ό 생성할 수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λ•Œ μƒˆ ν”„λ‘œμ„ΈμŠ€λ₯Ό μƒμ„±ν•œ ν”„λ‘œμ„ΈμŠ€λ₯Ό λΆ€λͺ¨ ν”„λ‘œμ„ΈμŠ€(parent process), λΆ€λͺ¨ ν”„λ‘œμ„ΈμŠ€μ— μ˜ν•΄ μƒμ„±λœ ν”„λ‘œμ„ΈμŠ€λ₯Ό μžμ‹ ν”„λ‘œμ„ΈμŠ€(child process)라고 ν•©λ‹ˆλ‹€. λΆ€λͺ¨ ν”„λ‘œμ„ΈμŠ€λ‘œλΆ€ν„° μƒμ„±λœ μžμ‹ ν”„λ‘œμ„ΈμŠ€λŠ” μ‹€ν–‰ κ³Όμ •μ—μ„œ 또 λ‹€λ₯Έ μžμ‹ ν”„λ‘œμ„ΈμŠ€λ₯Ό 생성할 수 있고, κ·Έ μžμ‹ ν”„λ‘œμ„ΈμŠ€λ„ μžμ‹ ν”„λ‘œμ„ΈμŠ€λ₯Ό 생성할 수 μžˆμŠ΅λ‹ˆλ‹€. λ§Žμ€ μš΄μ˜μ²΄μ œλŠ” 이처럼 ν”„λ‘œμ„ΈμŠ€κ°€ ν”„λ‘œμ„ΈμŠ€λ₯Ό λ‚³λŠ” 계측적인 ꡬ쑰(= 트리 ꡬ쑰)둜써 ν”„λ‘œμ„ΈμŠ€λ“€μ„ κ΄€λ¦¬ν•©λ‹ˆλ‹€. ν”„λ‘œμ„ΈμŠ€ ..
[운영체제] ν”„λ‘œμ„ΈμŠ€ μƒνƒœ λ³Έ κ²Œμ‹œκΈ€μ€ KOCW μ΄ν™”μ—¬μžλŒ€ν•™κ΅ 반효경 κ΅μˆ˜λ‹˜μ˜ κ°•μ˜λ₯Ό λ“£κ³ , 책을 μ°Έκ³ ν•˜μ—¬ μ •λ¦¬ν•œ λ‚΄μš©μž…λ‹ˆλ‹€. κ²Œμ‹œκΈ€μ— ν¬ν•¨λ˜λŠ” 이미지 μžλ£ŒλŠ” κ°•μ˜μ— ν¬ν•¨λœ κ°•μ˜ μžλ£Œμž…λ‹ˆλ‹€. ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœ ν•˜λ‚˜μ˜ μ»΄ν“¨ν„°μ—μ„œ μ—¬λŸ¬ ν”„λ‘œμ„ΈμŠ€λ“€μ΄ λΉ λ₯΄κ²Œ λ²ˆκ°ˆμ•„ κ°€λ©΄μ„œ μ‹€ν–‰λ˜λŠ” κ³Όμ •μ—μ„œ ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€λŠ” μ—¬λŸ¬ μƒνƒœλ₯Ό 거치며 μ‹€ν–‰λ©λ‹ˆλ‹€. 그리고 운영 μ²΄μ œλŠ” ν”„λ‘œμ„ΈμŠ€μ˜ μƒνƒœλ₯Ό PCBλ₯Ό 톡해 μΈμ‹ν•˜κ³  κ΄€λ¦¬ν•©λ‹ˆλ‹€. ν”„λ‘œμ„ΈμŠ€κ°€ κ°€μ§ˆ 수 μžˆλŠ” λŒ€ν‘œμ μΈ μƒνƒœλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. 1. 생성 μƒνƒœ - new ν”„λ‘œμ„ΈμŠ€κ°€ 생성 쀑인 μƒνƒœλ₯Ό 생성 μƒνƒœ(new) 라고 ν•©λ‹ˆλ‹€. 2. μ‹€ν–‰ μƒνƒœ - running CPUλ₯Ό ν• λ‹Ή λ°›μ•„ μ‹€ν–‰ 쀑(= instruction을 μˆ˜ν–‰ 쀑)인 μƒνƒœλ₯Ό μ‹€ν–‰ μƒνƒœ(running)라고 ν•©λ‹ˆλ‹€. μš°λ¦¬κ°€ μ‚¬μš©ν•˜λŠ” λŒ€λΆ€λΆ„μ˜ μ»΄ν“¨ν„°λŠ” C..
[운영체제] ν”„λ‘œμ„ΈμŠ€ λ³Έ κ²Œμ‹œκΈ€μ€ KOCW μ΄ν™”μ—¬μžλŒ€ν•™κ΅ 반효경 κ΅μˆ˜λ‹˜μ˜ κ°•μ˜λ₯Ό λ“£κ³  μ •λ¦¬ν•œ λ‚΄μš©μž…λ‹ˆλ‹€. κ²Œμ‹œκΈ€μ— ν¬ν•¨λ˜λŠ” 이미지 자료 λ˜ν•œ ν•΄λ‹Ή κ°•μ˜μ— ν¬ν•¨λœ κ°•μ˜ μžλ£Œμž…λ‹ˆλ‹€. ν”„λ‘œμ„ΈμŠ€λž€? ν”„λ‘œμ„ΈμŠ€λŠ” μ‹€ν–‰ 쀑인 ν”„λ‘œκ·Έλž¨μž…λ‹ˆλ‹€. PCB (Process Control Block) PCBλŠ” μš΄μ˜μ²΄μ œκ°€ 각 ν”„λ‘œμ„ΈμŠ€λ₯Ό κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄ ν”„λ‘œμ„ΈμŠ€λ‹Ή μœ μ§€ν•˜λŠ” μ •λ³΄μž…λ‹ˆλ‹€. μš΄μ˜μ²΄μ œλŠ” ν”„λ‘œμ„ΈμŠ€ λ‹Ή PCBλ₯Ό ν•˜λ‚˜μ”© 두고(컀널 μ˜μ—­μ— 생성) 이λ₯Ό μ΄μš©ν•΄ λΉ λ₯΄κ²Œ λ²ˆκ°ˆμ•„ μˆ˜ν–‰λ˜λŠ” ν”„λ‘œμ„ΈμŠ€μ˜ μ‹€ν–‰ μˆœμ„œλ₯Ό κ΄€λ¦¬ν•˜κ³ , ν”„λ‘œμ„ΈμŠ€μ— CPUλ₯Ό λΉ„λ‘―ν•œ μžμ›μ„ λ°°λΆ„ν•©λ‹ˆλ‹€. PCBμ—λŠ” μ–΄λ–€ 정보듀이 λ‹΄κΈΈκΉŒμš”? PCB의 ꡬ성은 μœ„μ˜ κ·Έλ¦Όκ³Ό κ°™μŠ΅λ‹ˆλ‹€. (1) OSκ°€ 관리상 μ‚¬μš©ν•˜λŠ” 정보 - Process ID(=PID): νŠΉμ • ν”„λ‘œμ„ΈμŠ€λ₯Ό μ‹λ³„ν•˜κΈ° μœ„ν•΄ λΆ€μ—¬ν•˜λŠ” κ³ μœ ν•œ ..