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..
![[ETL] Multithreading](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyUpRj%2FbtrCJvKfdff%2FAYFvRpMnhtkG3h7r4sC0Kk%2Fimg.png)
[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](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmM3nG%2FbtrCIVhe973%2FdIxxwcKAHIWchiUQ277qE1%2Fimg.png)
[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..