본문 바로가기

강의노트/운영체제

(15)
[운영체제] 6주차: 전통적인 동기화 문제 여기부터 7장 Bounded-Buffer problem Buffer의 크기가 N이고, data 생산자(Producer)와 소비자(consumer)가 있다고 하자. Producer는 Buffer가 꽉 차면 동작하지 않고 consumer는 buffer가 비어있으면 동작하지 않는다. semaphores mutex buffer는 critical section이므로 mutex로 mutual exclusion을 보장한다. 초기값 1 full 꽉 찬 버퍼의 수 초기값 0 empty 비어있는 버퍼의 수 초기값 N ⓐ Producer: wait(empty) empty가 하나도 없으면 기다림 처음에는 N이므로 block()이 호출되지 않는다 wait(mutex) buffer에 대한 독점권을 얻는다 mutex는 binary..
[운영체제] 6주차: Process synchronzation Review race condition 공유 데이터 access 시 접근 순서에 따라 결과가 달라지는 상태 Race condition이 발생한다는 것은 공유 데이터가 있다는 것. 이 부분을 Critical section이라 함 여러 프로세스가 동시에 Critical section에 접근해서 data가 깨지기 때문에 발생하는 문제임 -> 한 번에 한 프로세스만 접근할 수 있도록 한다. 이 문제를 해결하려면 다음의 세 조건을 충족해야 함 Mutual exclusion Critical section에 접근하는 프로세스는 한 시점에 한 개뿐이어야 함 Progress Critical section에 진입할 준비가 된 프로세스들만을 대상으로 다음에 접근할 프로세스가 정해짐 Bounded waiting Critica..
[운영체제] 5주차: 동기화를 위한 H/W적 수단 일반적으로 시스템에서 Synchronization hardware를 제공해 critical section 문제를 해결함 가장 간단한 방법은 interrupt를 비활성화해 context switch가 일어나지 않도록 하는 것이나 이 경우에는 다른 부분에도 영향을 많이 미칠 수 있음 특히 Uniprocessor가 아닌 Multiprocessor의 경우 전체 프로세스에 대해 모든 interrupt를 disable해야 하기 때문에 비용도 많이 든다. 구성 앞에서 본 Critical section 문제를 해결하는 방법이랑 똑같다고 보면 됨 Critical section에 진입하기 전에 lock을 획득하고 Critical section 실행이 끝나면 lock을 release 함 Hardware instruction..
[운영체제] 5주차: 동기화 Review CPU Scheduling Preemptive와 Non-preemtive로 나뉘며 다음과 같은 알고리즘이 있다 Ready queue가 한 개 일 때 FCFS: Convoy effect SJF: Optimal Priority scheduling: Starvation 가능 -> Aging RR: Time quantum이 중요함 Ready queue가 여러 개 일 때 Multilevel Queue scheduling Multilevel Feedback Queue scheduling Real-Time CPU Scheduling algorithms Deadline 안에 작업을 마무리해야 함 Rate monotonic scheduling Earliest deadline first scheduling P..
[운영체제] 4주차: CPU scheduling 모든 프로세스는 하나 이상의 thread로 구성된다. 2개 부터는 Multithread Multithread는 자원 공유가 쉽다(한 프로세스의 자원을 그냥 읽어오므로) 프로세스끼리 자원공유는 Shared memory나 Message passing 등이 필요함 -> Multiprocess보다는 Multithread가 더 경제적으로 장점이 많다. 컴퓨터의 CPU는 물리적으로 한계가 있다. Multiprocessor라도 프로세스의 수가 훨씬 더 많으면 일부 프로세스는 프로세서가 할당될 때까지 기다려야 함 -> 스케줄링이 필요하다. CPU가 쉬는 시간을 조금이라도 더 줄여야 효율이 극대화된다. : 멀티프로그래밍(이 확장되면 멀티태스킹) 메모리에 여러 개의 프로세스를 동시에 올려 필요할 때마다 CPU를 전환해서 ..
[운영체제] Term project: Nachos 교육용 운영체제 윈도우 위에서 Application처럼 돌아가지만 내부적으로는 Application-OS-H/W로 구성됨 MIPS Processor 상에서 돌아감 -> C 프로그램을 짜면 MIPS로 Cross complie 해줌 근데 C 프로그램 짜서 돌려보고 이런 건 안 할 거임 (시간 없음) Java package 다 $nachos$ 패키지의 subpackage machine: 하드웨어 vm: Virtual memory threads: Nachos의 기본단위는 thread -> 그거랑 관련된 거 여기 많이 봐야 됨 각 프로젝트 디렉토리는 $nachos.conf$를 갖는다. 그냥 configuration 파일이라 수정할 일은 잘 없음 Scheduler 종류를 바꿀 수도 있는데 그 때는 이 파일을 건드려..
[운영체제] 3주차: Thread Thread Process: 운영체제가 관리하는 기본 단위 Thread: CPU를 활용하는 기본 단위 모든 프로세스는 하나 이상의 Thread로 구성된다. 기본적으로 프로세스처럼 ID, PC, Register, stack 등을 갖는다. 다만 프로세스와 달리 Code section이나 Data section 등이 같은 프로세스 내의 모든 thread가 공유할 수 있다. 프로세스보다 더 가볍다는 장점이 있다. 어떤 작업을 여러 스레드로 나눠서 구현할 경우 관리가 더 용이하다. Ex) Multithreaded server Single thread라면 여러 client가 동시에 요청했을 때 먼저 요청된 것부터 하나씩 처리하므로 response time이 길어진다. Multithread라면 서버가 직접 요청을 처..
[운영체제] 3주차: Review (2) 3장: 본격적인 내용 Process: Program in execution -> Active entity Program: passive entity 프로그램을 클릭하면 그게 프로세스가 되어 메모리에 올라가고 Stack, Heap, Data, Text로 구성됨 I/O-bound process: I/O 작업을 많이 하는 프로세스 CPU-bound process: CPU 작업을 많이 하는 프로세스 프로세스 상태 전이: NEW, READY, WATING, RUNNING, TERMINATED (Process lifecycle) NEW: 프로세스 생성 시 READY: CPU 할당 대기 RUNNING: CPU 할당 받음 WATING: RUNNING에서 I/O 요청 받음, I/O 끝나면 READY로 돌아감 TERMIN..