출처: https://3months.tistory.com/307 [Deep Play]

3-2/운영체제 20

Introduction to Paging

Concept of paging Paging은 각각의 address space를 fixed-size로 나누어 page로 나누는 것이다. Paging에서, physical memory도 page frame이라는 것으로 나누어진다. Process 마다 있는 page table은 virtual address를 physical address로 변환할 줄 알아야한다. Advantages Of Paging Flexibility : address space를 효과적으로 사용할 수 있게 도와준다. Simplicity : page와 page frame이 같은 size를 가지고 있고, 할당하기도 쉽고 가지고 있기도 쉽다. 여기서 중요한 점은 logical address에서는 contiguous하다는 것이다. Common ..

3-2/운영체제 2021.10.08

Segmentation

Segmentation Segment는 그저 address space의 contiguous한 부분일 뿐이다. Segmentation은 OS에게 각각의 segments(Code(Data), Stack, Heap)를 다른 physical memory에 위치 시킬 수 있게 해준다. 따라서 사용되지 않은 virtual address 공간에 physical memory를 채우는 일을 피할 수 있다. Segmentation Implementation MMU는 프로세스마다 다른 Segment Table을 가지고 있다. 각각의 segment는 그들만의 base and bound, protection bits를 가지고 있다. 0x0240은 segement가 0 이므로 Base 0x2000을 더해줘 physical add..

3-2/운영체제 2021.10.08

Memory API

Virtual Address Space 만약 molloc, free() 등과 같은 함수를 읽게 되면 syscall이 발생하여 brk,sbrk,mmap과 같은 기능을 하게 된다. malloc() sizeof() free() Forgetting To Allocate Memory 언뜻 보면 위에 코드가 맞는 것 처럼 보이지만 *dst는 unallocated되어있기 때문에 *src의 내용을 받을 공간이 없다. 미리 *dst에 공간을 할당해주면 된다. 문제는 적게 할당을 하더라도 error없이 잘 돌아간다는 것이다. 이런 에러는 나중에 일일이 다 뜯어서 고쳐야하므로 주의하도록하자. 공간만 할당하고 안에 내용을 넣지 않은 채로 접근하는 것도 문제가 된다. Memory Leak heap 영역에 메모리를 다 사용했다면..

3-2/운영체제 2021.10.08

The Abstraction : Address Space

Memory Virtualiziation OS는 physical memory를 가상화한다. OS는 각각의 프로세스에 가상 메모리 공간을 제공한다. 각각의 프로세서에게는 자기가 모든 메모리를 사용하는 것처럼 보인다. Process structure: struct thread switch from user stack to kernel stack을 할 때 raise privilege level도 같이 해줘야 한다. Motivation for Virtualization Uniprogramming : 한 프로세스만 그 시간에 돈다. p1과 p2가 가상 메모리를 위와 같이 할당받았다고 했을 때, 실제 physical memory에서 kernel영역을 공유하고 있고 user영역은 따로 사용하고 있다. Abstract..

3-2/운영체제 2021.09.30

Multiprocessor Scheduling

Multiprocessor Scheduling Multicore processor의 등장으로 multiprocessor-scheduling이 필요하게 되었다. 우리는 threads를 활용하여 여러 개의 CPU들에 jobs을 schedule 해주어야 한다. Single CPU with cache Cache에는 main memory에 있는 popular data들을 복제하여 저장해놓는다. Cache는 Main Memory에 비해 접근이 빠르다. Cache coherence CPU 0과 CPU 1이 data D를 다룬다고 할 때, 각각의 cache들은 private한 성질을 가지고 있으므로, CPU 1은 update 된 D'가 아닌 D를 가져오게 된다. 따라서 CPU에서 update data를 cache에서 ..

3-2/운영체제 2021.09.24

Scheduling:The Multi-Level Feedback Queue

Multi-Level Feedback Queue(MLFQ) MLFQ의 목적은 turnaround time을 optimize하고 프로그램의 실행시간을 모르는 상태에서 response time을 minimize하는 것이다. MLFQ를 배우기 전에 알아야 할 개념이 있는데 short job은 반복적으로 CPU권한을 포기하는 job이고(ex : repeat I/O), long job은 CPU를 굉장히 intense하게 사용하는 job이다. fork(A,B,C,D)를 했다고 가정하자. A와 C는 프로그램이 완료 또는 interrupt가 2ms 정도에 이루어지고, B는 16ms, C는 64ms 정도에 이루어진다고 하자. 처음 들어온 A,B,C,D 모두 Q4에 들어가 순서대로 2ms씩 실행되게 된다. A와 C는 실행..

3-2/운영체제 2021.09.17

Scheduling:Introduction

Scheduling Metrics Scheduling Metrics에는 Performance Metric과 Fairness Metric이 있다. 참고로 밑에 예시들은 I/O input이 없는 경우이다. First In, First Out(FIFO) 먼저 오는 것이 먼저 실행되는 방식이다. 위와 같이 먼저 온 것의 실행시간이 긴 경우 Average turnaround time이 늘어나게 되고, convey effect가 발생할 수 있다. Convey Effect Convey Effect란, 예를 들어서 cpu intensive한 p1과 I/O를 많이 실행하는 p2~p10이 있다고 할 때, p1이 먼저 run할 경우에 p2~p10에서 SSD를 사용해야 하지만 p1이 실행 되는 긴 시간 동안에 SSD는 IDL..

3-2/운영체제 2021.09.17

Mechanism:Limited Direct Execution

Running programs에 limits를 두지 않는다면 OS는 그저 library에 불과하다. Recap : Process Creation 1. 프로그램 코드를 memory와 process의 address space에 저장해준다. 2. 프로그램의 run-time stack이 할당된다. - 스택을 local variables, function parameters, return address를 저장하는 데 사용한다. - main함수의 argc,argv로 stack을 초기화한다. 3. 프로그램의 heap을 만든다. - 명시적으로 선언된 동적할당된 데이터를 위해 사용된다. - malloc과 free가 필요하다. 4. OS가 다른 일을 한다. - (I/O) setup 5. 프로그램을 실행한다.(main())..

3-2/운영체제 2021.09.10

Process API

fork() fork()를 해주면 child process는 부모와는 다른 프로세스에 메모리를 할당받게 된다. 하지만 부모와 contents는 같다. 새롭게 생성된 process는 이것만의 registers와 PC(program counter register)를 갖게 된다. parent 에서 fork()는 child process의 PID를 retun 해주고 child에서는 0을 return 한다. #include #include #include int main(int argc,char* argv[]){ //getpid()는 실행 중인 process id를 구해준다 printf("hello world (pid:%d)\n",(int) getpid()); //child는 여기서 부터 실행 int rc = f..

3-2/운영체제 2021.09.09

Process

CPU virtualizing 운영체제가 여러가지 가상 CPU들이 존재하는 것 처럼 보이게 하는 것을 말한다. Process 구성요소 Memory( address space ) - Instructions - Data section Registers - Program counter - Stack pointer Process API Create - 새로운 process를 만든다. Destroy - process를 중단한다. Wait - 돌아가는 것을 멈추기 위해 다른 process를 기다림 Miscellaneous Control - process를 중단했다가 재개하는 기능 Status - process 상태를 가져옴. Loading:From Program To Process Process State Tran..

3-2/운영체제 2021.09.03