Operating System (8) 썸네일형 리스트형 Advanced_paging ch8에서 언급했듯, 더 나은 페이징 기법을 위한 몇 가지 사례를 소개한다.Linear Page Table앞서, 하나의 process는 하나의 Page table을 가질 수 있다고 소개했다.32bit의 주소공간을 가지고, 4KB의 page 크기, 4B의 PTE 크기, 2^20개의 pate table entry 수이러한 공간은 총 4MB라는 Page table의 공간을 할당하게 한다.그런데 문제는, 이 넓은 공간에 사용하지 않는 Invalid entries를 위해서도 자리를 잡고 있어야 한다.⇒ 이러한 문제를 해결하기 위해 한 가지 접근방법을 생각한다Hybrid Approach: Paging and SegmentsSegment 별로 page table을 구성하는 방법이다.SegmentationVirtual.. Paging Concept of pagingCh6에서, Segmentation의 문제로 internal fragmentation이 발생한다는 것을 알았다.fragment에 가변적인 공간을 할당했기에 이 문제가 발생했다.Paging은, page라고 부르는 fixed-size의 address space로 process를 쪼갠다 (page는 virtual address space 공간임)Segmentation은 logical segment의 가변적인 크기로 할당또한, Physical memory는 page frame이라고 부르는 # of pages로 split 됨.Page나 page frame의 크기는 2의 거듭제곱 사이즈임 (보통 512B - 8KB )이 때, virtual address를 physical address.. Address translation 그럼, 이번 챕터에서는 전 챕터에서 진행했던 virtual memory 구현 과정에서 Address translation이 어떻게 일어나는지 알아본다.Address Translation다음 그림은, 간단한 address translation이 일어나는 예시이다. %ebx레지지스터의 주소값에 offset으로 0을 더한 값을, %eax 레지스터에 저장한다.%eax에 저장된 값에 3을 더한다.%eax에 저장된 값을 %ebx의 주소가 가리키는 값에 load한다. 이 과정을 virtual memory 상으로 보면, 다음과 같다.이 전체 과정에서 memory(physical) 접근은 총 5번 일어난다. (Fetch 3번, load / store 각 1번) RelocationOS는 통상적으로 주소가 0이 아닌 다른.. Virtual memory IntroVirtual memory를 구현 할때, Level of indirection을 알아야 함.Level of indirection이란, pointer와 같이 간접적인 방법을 거쳐 이루어지 단계의 수이다→ 코드가 더욱 유연해지 일반화될 수 있다 ! (but cost 발생)Ch2.Protection에서, 우리는 memory에 다양한 process를 Load하는 과정에서Protection issue가 발생함을 알았음. 이러한 Protection issue를 해결하기 위해 다양한 메모링 기법이 탄생Virtual Memory: GoalsProtection다른 Process들로부터 Process와 OS를 보호해야함Isolation 구현 : 다른 process들에게 영향을 미치지 않고 fail해야함Cooper.. CPU Scheduling CPU scheduling무슨 process가 다음에 실행하고, runnable process의 set을 제공하는 정책이다.Mechanism : How to transition?Policy : When to transition/ TerminologiesWorkloadA set of job(program이랑 비슷하다 보면 됨) descriptions: 동작시킬 job들의 명세e.g. arrival time, run time etcSchedulerA logic that decides when jobs runMetricscheduling quality를 평가하는 척도e.g. turnaround time, response time, fairness etcScheduling Performance Metric.. Process 그럼, Ch1,2에서 봤던 Process는 어떻게 구현하고, 어떻게 관리할까?What is a Process?Process란,An instance of program in excecutionProtection의 기본 단위PID로 구분되며, CPU context / OS resources / Other information을 보유하는 객체 Code와 Static data를 process화 시키면 시행에 필요한 부가적인 resource가 형성된다Proces를 동작시키기 위해, CPU는 다음곽 같은 5가지 동작을 무한루프에서 반복한다(Instruction cycle = Fetch - Decode - Execute cycle)Fetch IPMEM[PC] ( Process의 메모리 할당 )Decode IPEx.. System call Mode switch : User → Kernel그렇다면, Ch1에서 본 Memory protection에서 user에서 kernel모드로는 어떻게 전환될까?다음과 같은 3가지 방법이 존재한다.Interrupts미리 저장한 kernel의 code이다.Externel hardware에 의해서 Trigger된다(ex timer and I/O)Exceptions(=traps)주로 software의 unexpected program behavior or malicious behavior에 의해 Trgger된다System callsexception mechanism에 의해서 구현된다 ( exception 발생하면 이를 해결하기 위해 syscall 호출)process에 의해 requested되며, process를 .. Protection OS란 무엇인가?-Hardware을 application에게 유용한 form으로 만들어주는 kernel에서 작동하는 software이다.OS의 main role 3가지Design abstractions to use hardwareProtection & IsolationSharing resourcesDesign abstraction to use hardware중요하지 않은 detail을 무시함으로써 이해하기 쉽도록 만든 processProvide protection, Isolation예전에는, OS kernel과 application이 같은 주소에서 동작해 App이 kernel instruction 읽기 및 수정이 가능하였다.main()을 call하면 OS에게 통제권이 돌아오지 않았기에, pdf에선 “OS.. 이전 1 다음