CS/운영체제

    메모리 관리

    메모리 관리

    출처 : KMOOC / 운영체제 / 이화여대 반효경 교수님 연속 할당 현대 OS에선 안씀 Paging 필요 없는 안쪽 페이지는 안만들고 바깥 페이지에는 NULL 저장 Page Table 사실 page table엔 valid-invalid bit도 있고 protection bit 도 있음 Segmentation 각 segment의 크기가 다르기 때문에 segment 번호 뿐만 아니라 base, limit도 저장해야 함 Allocation은 외부 단편화로 남는 공간을 어떻게 할당할지 크기 n인 segment 생겼을 때 first fit : 가장 먼저 만난 n 이상인 공간 사용 best fit : n 이상인 공간 모두 찾은 뒤 그중 가장 작은 공간 사용 대신 의미 단위로 해야하는 일은 더 잘한다 Paged S..

    Deadlock

    Deadlock

    출처 : KMOOC / 운영체제 / 이화여대 반효경 교수님 Deadlock Prevention 4가지 조건 중 하나를 막아서 예방 Deadlock Avoidance 아예 unsafe(데드락이 발생할 수도 있는 상태) state 자체를 회피 자원 할당 그래프 알고리즘 or 뱅커스 알고리즘 Deadlock Detection and recovery Deadlock Ignorance 현대 OS들은 대부분 데드락을 그냥 무시함 즉, 데드락은 고전적인 문제 중요성이 낮은 챕터라고 말할 수도 있겠음

    [ETL] Multithreading

    [ETL] Multithreading

    출처 : SNUON / 운영체제의 기초: 쉽게 배우는 운영체제 원리 / 서울대 홍성수 교수님 병렬성이 필요할 때마다 프로세스 만드는 건 오버헤드가 너무 큼 잘 생각해보면 프로세스에서 context는 자원이고 thread of control(execution stream)이 실행 주체다. ex) CPU register : cpu 자원, memory context : 메모리 자원 그럼 thread of control은 여러 개 있어도 되지 않을까? 자원은 한 프로세스 분량만 유지하고 쓰레드들이 자원을 나눠서 쓴다 이제 쓰레드가 execution entity, 즉 CPU를 할당받는 주체다. 하나의 프로세스가 여러 개의 스택을 갖는다. 즉, 쓰레드들이 address space, resource는 공유하는 대신 ..

    [ETL] Process Creation and Termination

    [ETL] Process Creation and Termination

    출처 : SNUON / 운영체제의 기초: 쉽게 배우는 운영체제 원리 / 서울대 홍성수 교수님 Process Creation 단순한 toy OS 를 만들고자 한다면 fake stack 쌓는 것으로 process creation 가능. 하지만, 실제 OS는 조금 더 복잡하다. 프로세스 생성 과정 - 먼저 disk에 있는 executable file 읽는다 - executable file의 code, global 변수 등을 쭉 읽어들인다(load) - code 영역에 code 넣어주고 data 영역에 data 넣어준다. 빈 스택 영역, 힙 영역 만든다. - PCB 만든다 - PCB를 ready queue에 끼워넣는다 주의 UNIX 계열은 0번 프로세스만 이렇게 생성하고 나머지 프로세스는 fork로 clonin..