분류 전체보기 (78) 썸네일형 리스트형 [운영체제] 8. paging의 문제를 해결하기 위한 첫번째 기법 : TLB ! Locality를 이용; 자주 사용되는 Page Table Entry를 CPU의 MMU라는 부분에 올려둬서 사용 Flow Virtual address에서 VPN 추출 VPN으로 TLB lookup TLB Hit : protect bit 확인 후 PFN 추출 후 offset 더해서 memory access TLB miss : PTE 찾아서 VPN, TLB, ProtectBit 쌍을 TLB에 올린 후 instruction 재실행 그래서 TLB는 누가 관리하는데? CISC는 hardware가 관리 RISC는 OS가 관리 hardware가 exception (trap handler)을 띄움 TLB miss가 일어나, OS내 코드로 구현된 trap handler가 TLB miss 처리 OS가 TLB 내 어떤 da.. [운영체제] 7. Memory Paging Page concept page: 주소 공간을 같은 사이즈로 자르는 것 (↔ Segmentation : size의 크기 다양함) page frame: physical memory에서 page와 같은 사이즈로 만들어 둔 것 page table : page frame과 page 사이 mapping을 위해 필요한 장치 (프로세스 별로 있는 것이 핵심) Paging의 이점 Flexibility : 주소 공간의 abstraction을 효과적으로 지원, heap과 stack이 어떻게 자랄지 고려할 필요 X page table이 있으니까 주소 번역할 때 어떤 곳에 뭐가 있는지 아니까 걱정할 필요 없음 Simplicity : free-space 관리하기 쉬움,, free list 할당하고 유지하기 쉬움 문제 128 b.. [운영체제] 6. Memory Segmentation base and bound register의 문제 연속된 빈 공간 찾아주기 힘들다 address spcae 자유롭게 늘였다 줄였다 못함 free space를 넓게 physical memory에 잡아야 함 ; for heap Segmentation 등장 Segmentation : 연속적인 virtual address space 조각 → 자유롭게 physical address 매핑 가능 segment 별로 base와 bound 제공: 내가 쓸 것만 segment 가져옴 segmentation에서의 주소 번역 : physical address = offset + base virtual address에서도 마찬가지로 offset + virtual address segment의 base Segmenation fa.. [운영체제] 5. Memory and Address Space Memory 관련 여러 이슈 Memory Leak : branch instruction 등을 계속 사용해 jump 할 경우 free를 하지 못해 할당한 공간 계속 유지되는 경우 생기는데, 이를 heap의 memory 영역이 샌다고 해서 memory leak이라고 부름 Dangling Pointer : dangling pointer가 가리키는 메모리가 free되어 더이상 유효하지 않음. 이렇게 free된 부분에 접근될 경우 예측 불가능한 동작, 만약 이 메모리에 접근이 불가능할 경우에는 segfault double free: 이미 free한 메모리를 한번 더 free 갈김: undefined error; 컴파일러가 아무거나 해도 됨 memory 할당 calloc() : malloc과 유사하지만 할당 후 공.. [운영체제] 4. Advanced Scheduling Schemes Proportional Share Scheduler: Fair-share scheduler; ticket의 비중에 따라 CPU 자원을 할당받음 Lottery Scheduling : ticket 할당해두고, 랜덤 번호 갖고 있는 프로세스가 스케줄됨 ticket mechanism ticket transfer : 자기가 수행해야할 I/O 갖고 있는 애한테 티켓 주기 ticker inflation : 일시적으로 자기 자신 부풀림 // counter: winner job 찾기 위한 변수 int counter = 0; // winner: random number로 추출해서 winner job 찾게 하려고 하는 값 (로또 번호) int winner = getRandom(0,totaltickets); // curren.. [운영체제] 3. Scheduling Basics Scheduling Metric Turnaround time: T_completion - T_arrival fairness: 모든 job들이 turnaround time이 비슷한가? Response time: T_firstrun - T_arrival Scheduling Algorithm FIFO → convoy effect SJF (Shortest Job First) Shortest Time-to-Completion First : 기존 job vs 새 job 걸리는 시간 계산해서 먼저 끝날 애부터 실행 Round-Robin scheduling : turnaround 별로, 그치만 reponse time 좋죠 MLFQ (multi-lecvel Feedback queue: 여러개의 큐로 우선순위를 구현; 큐.. [운영체제] 2. Program and Process fork() System call: child process 생성 복사되는 내용 address spcae register file PC: 형재 실행할 명령어 주소 담긴 레지스터 code #include #include #include int main(int argc, char *argv[]){ printf("hello world (pid:%d) \\n", (int) getpid()); int rc = fork(); if(rc < 0){ fprintf(stderr, "fork failed\\n"); exit(1); } else if (rc == 0){ printf("hello, I am child (pid:%d)\\n", (int) getpid()); } else { printf("hello, I am p.. [운영체제] 1. What is an OS? OS의 의무 다른 기기와의 상호작용 가능하게 프로그램이 메모리 공유할 수 있게 프로그램들 실행하기 편하게 하기 OS가 무슨 일을 하는지 resource allocator control program OS가 어떻게 돌아가야 하는지 Virtualization 각 프로세스들이 자신만의 주소 공간이 있다고 믿도록 가스라이팅하는 것 주소 공간과 physical address에 매핑하는 것을 OS가 하고, 한 프로세스가 다른 프로세스에 침범하지 못하게 하는 것도 OS가 함 Concurrency 스레드 간 공유되는 영역인 critical section을 처리하는 연산이 atomic하게 되는가? 우리 쓰레드가 독점적으로 critical section 처리할 수 있도록 OS가 lock도 걸어줌 Persistence da.. 이전 1 ··· 3 4 5 6 7 8 9 10 다음