목록전공/운영체제 (22)
수정입니다

Splitting 빈 공간에 대한 요청이 있을 때, 두 부분으로 쪼개서 요청만큼 return 하고 나머지 부분을 다시 free로 관리 이후 free list를 update 시켜준다 Coalescing 각 free chunk의 size가 요청한 크기보다 작아서, 연속되어 있는 작은 free chunk 들을 하나로 merge 후 return 서로 붙어 있는 free chunk 들만 large single free chunk로 만들 수 있다. free list가 address 순서대로 안되어있을수도 있음 => 정렬을 하든 해서 찾고 합치기 Tracking The Size of Allocated Regions free(void *ptr)은 포인터의 시작 주소만 받지, 크기는 모르는데 어떻게 전체를 해제할 수 있..

Inefficiency of the Base and Bound Apporach 기존 base-bound 처럼 virtual addr 전체를 physical로 mapping 하면, free 상태인 사용하지 않는 공간도 함께 physical address를 사용하게 되므로, 메모리 낭비를 하게 됨 Segmentation address space의 contiguous한 어떤 부분 부분들을 의미한다 보통 code, stack, heap segment를 이야기함. 각각의 segment들은 physical의 서로 다른 곳에 mapping 될 수 있고 , 크기도 다를 수 있음 각 segment들은 각자의 base-bound 를 가진다. => 사용하는 공간만 phsical에 relocation 하므로 절약 가능 Add..

Memory Virtualization with Efficiency and Control CPU virtualization을 실행할 때 hardware의 도움을 받아서 한 프로세스가 일정시간동안 수행하고, 다른 프로세서가 또 일정시간동안 수행하게 하는 limited direct execution(LDE) 라는 환경을 만듬 이렇게 하면서 CPU 가상화의 efficiency와 control을 높일 수 있었음 memry virtualization도 비슷하게, hardware의 도움(reg, TLB, page-table)을 이용하여, 한 프로세스가 다른 프로세스의 address space를 침범하지 못하도록 함. Address Translation hardware가 virtual address를 physical..
Memory API : malloc() #include void *malloc(size_t size) size_t size => memory block sizke (byte) size => unsigned integer type void type pointer로 시작 주소가 return 됨 할당 실패 시 null pointer 반환 sizeof() int *x = malloc(10 * sizeof(int)); printf("%d\n", sizeof(x)); /* malloc에 할당 되는 byte는 runtime에 잡히지만 sizeof() 자체는 macro라서 compile time에 수행 됨(포인터가 가리키는 곳 크기를 모름) 즉, 그냥 포인터 변수의 크기인 4가 출력된다. */ int x[10]; pr..

Memory virtualization ? OS가 process에게 메모리 독점의 환상을 줌 한 process가 physical memory 전체를 사용한다는 느낌을 주는 것 모든 procss는 같은 구조의 address space를 가짐 OS in the Early System poor utilization and efficiency 예전에는 한 프로세스가 피지컬 메모리를 사용하면, 다 끝날 때까지 다른 프로세스가 사용 x Multiprogramming and Time Sharing memory에 multiple process를 load memory 내에서 부분 부분을 각 process가 switch 하며 사용 위 보다 utilization과 efficiency가 상승 protection issue 발..

요즘 대세는 multiprocessor에서 multicore로 변하고 있다. Multi - processor ? CPU 자체가 여러개 하지만 CPU를 늘리는 것에 물리적으로 한계가 존재함 (크기, 쿨링 문제 등) Multi - core ? 하나의 CPU가 여러개의 core를 가지고 있음 하지만 어차피 single core 용으로 만들어진 프로그램이 많아서, multi - core의 장점이 사라짐 => 이 문제를 해결하기 위해 threads를 사용 Threads ? thread끼리 code, data, heap(memory)를 공유함 thread마다 program counter 존재 => 어떤 A라는 프로세스가 여러개의 thread를 사용하며 각 pc를 각 core에 연결해서 multi-core로 돌릴 수..

Proportional Share Scheduler == Fair share scheduler trunaround time 이나 response time에 관심 x 각각의 process에 가중치 할당이 가능하고, 이 가중치에 비례해서 cpu 타임을 부여함 위의 조건이 충족되면, >Fair 하다< 라고 할 수 있음 Basic Concept - Ticket 가중치를 나타내는 방법 중 하나 ex) process A가 75 tickets을 가지면, 75%의 cpu 를 부여함 process B 가 25 tickets을 가지면, 25%의 cpu를 부여함 A와 B의 가중치는 3 : 1 비율 Lottery scheduling scheduler가 random하게 winning ticket을 하나 고름 이후 그 numbe..
Multi-Level Feedback Queue(MLFQ) Objective Optimize turnaround time => Run short jobs first Minimize response time for interactive jobs => SJF는 turnaround time이 좋고 response time은 안좋고 => RR은 turnaround time이 안좋고 response time은 좋은데 => MLFQ는 이 두개를 합쳐서 둘다 좋게 만들려고 함 MLFQ : Basic Rules 다른 priority level을 가진 여러개의 Ready queue를 가지고 있음 higher queue에 있는 애들을 먼저 실행 , 같은 priority level 일 때는, RR 방식으로 실행 각 job의..

Workload assumptions Each job runs for the same amount of time All job arrive at the same time All jobs only use the CPU(i.e., they perform no I/O) The run-time of each job is known => 현실에선 충족되긴 어렵지만, 간단하게 정의하기 위해 만든 가정들 => 모든 process 들은 실행시간이 같고, 동시에 시작하며, CPU만 사용하고, 총 수행시간을 알고 있다. Scheduling Metrics Performance metric: Turnaround time T(turnaround) = T(completion) - T(arrival) 끝나는 시간 - 도착 시간 N..

운영체제는 time sharing을 통해서 CPU 를 process에 공유한다고 했다. 여기서 두가지 issue 존재 Performance - context switching overhead Control - process에 넘긴 CPU 주도권을 어떻게 다시 가져오고 유지할 지 Direct Execution 그냥 프로그램 실행 후 끝날 때까지 기다렸다가 다시 control을 가져오는 방식 하지만 프로그램에 어떤 limit도 가하지 않는다면, 운영체제로서의 역할을 한다고 말하기 어렵다 +) 여러가지 문제 존재 Problem 1 : Restricted Operation process가 CPU처리 이외에 disk의 I/O처리나 다른 system resouces를 필요로 할 때 어떻게 할 거냐? process가..