전체 글

Recording of development
Implement system call infrastructure. Interrupts : OS의 매커니즘 OS가 cpu를 사용하고 있는 user program으로부터 제어권을 다시 가져올 수 있는 방법들이 여럿 있다. H/W interrupt (External Interrupt): 하드웨어의 timer, 외부 장치의 I/O에서 발생. S/W interrupt (Internal Interrupt): 프로그램(sw)에서 발생. Exception Trap System Call: x86-64에서 syscall이라는 명령어 도입, system call handler를 빠르게 호출. system call을 호출하기 위해 필요한 건 system call number와 추가 인자들이며, 이것은 syscall 명령어를..
PintOS project 2 :: User Program Index Argument Passing : user program의 인자를 함수에 전달하는 과정을 만든다. User Memory: user의 virtual address space에 데이터를 read/write 하는 방법을 제공한다. System Calls: user program이 kernel mode에서만 허용되는 것들을 하기 위해 호출하는 인터페이스를 만든다. Process Termination Messages: user process가 종료시 프로세스 이름과 exit 코드를 제공한다. Denying Writes to Executabels: 실행파일로 사용 중인 파일에 대한 쓰기를 거부하 Extend File Descriptor(Extra..
정글에서의 8-9주차, project 2 user program을 마주하며... 이번 주의 user program은 주로 운영체제 세 가지 이야기 서적을 읽고, 손으로 공부했다. 종이에 지식을 정리하고, 지금까지 읽어온 CSAPP을 다시 찾아보고 추가로 정리하니 어지럽게 분산된 지식들이 조금씩 제자리를 찾아가는 것 같았다. 특히 권영진 교수님의 OS 강의가 재미있었다! 막연하기만 했던 pintOS나, OS의 개념들이 조금 더 눈에 잘 들어오게 되었다. OS가 왜 CS의 꽃이라 말하는지 짐작이 되었다. 프로그래밍에서 중요한 개념들을 집대성한 결과물이라서 그랬던 거였다. Keywords User mode VS Kernel Mode Register VS Memory User Stack System Call F..
이해에 도움이 되었던 참고 페이지 https://web.stanford.edu/class/cs140/projects/pintos/pintos_7.html#SEC131 MLFQS 목표 반환 시간의 최적화 | 짧은 시간을 먼저 실행시키자! 그런데 실행 시간의 정보를 어떻게 알 수 있지? 응답 시간의 최적화 이 목표를 이루려면 프로세스에 대한 정보가 필요하다. 따라서 실행 중인 작업의 특성을 알아내고 스케쥴링에 사용하자. 특징 우선순위(priority level)이 다른 여러 개의 큐로 구성되고, 높은 우선순위를 가진 큐에 존재하는 작업이 선택될 가능성이 높다. 각각의 큐엔 둘 이상의 작업이 존재할 수 있고, Round Robin 스케쥴링 알고리즘이 사용되어 작어이 처리된다. 우선순위를 작업의 특성에 따라 동..
Implement priority scheduling and priority donation in Pintos. 실행 중인 스레드보다 우선순위가 높은 스레드가 ready list에 추가될 때 어떻게 해야 하는가? Donation ? | Priority Inversion 높은 우선순위를 가진 H가, 낮은 우선순위의 L이 가진 공유 자원(lock, acquired)을 사용해야 하는데 하지 못하고 대기할 때 우선순위 반전 현상이 발생한다. 아래 도표에서처럼, H는 blocked되어 대기 상태로 존재한다. 그런데 H가 대기하고 있는데 중간 우선순위를 가진 H가 ready list에 있다면, H는 또다시 밀린다. 즉, H가 밀리는 '반전 현상' 이 발생한다. 어떻게 해결할까? 높은 우선순위를 가진 스레드가 낮은 ..
Context Switching 문맥 교환 CPU에서 프로그램 실행을 잠시 중단하고 다른 프로그램을 실행하는 것 현재 실행중이던 프로세스가 (어떤 이유에서건) 중단되었때 행하는 기법이다. 만약 OS가 현재 실행중인 프로세스를 멈추고 다른 프로세스를 실행해야 할 때 실행한다. 먼저, 해당 프로세스의 레지스터값들을 저장한다. 나중에 해당 프로세스가 다시 CPU에 올라왔을 때, 이 레지스터값들을 복원하여(에를 들어 해당 값을 실제 물리 레지스터에 다시 저장함으로써) 일시정지 하였던 부분부터 재실행한다. 이 문맥 교환 시 만약 interrupt 등이 발생하면 곤란하므로 os는 인터럽트를 비활성화(불능화) 하거나, lock을 사용해 동시성 문제를 예방한다. Scheduling이란? 운영 체제가 실행해야 하는 여러..
J융
Develop day by day