no image
Project 2. System Calls 구현 (3) - Process related
과제 관련 설명 [Krafton Jungle | TIL_22.12.27] Project 2. System Calls 구현 (1) - 개요 1. [Git book] User Memory 시스템 콜을 구현하기 위해서는 가상 주소 공간에 데이터를 읽고 쓰는 방법을 제공해야한다. 인수를 가져올 때는 이러한 기능이 필요하지 않다. 그러나 시스템 콜의 인수로 olive-su.tistory.com Process related: halt, exit, exec, wait, fork File related: create, remove, open, filesize, read, write, seek, tell, close 🎯 Goal Modified files threads/thread.h threads/thread.c us..
2023.01.05
no image
Project 2. System Calls 구현 (2) - File related
과제 관련 설명 [Krafton Jungle | TIL_22.12.27] Project 2. System Calls 구현 (1) - 개요 1. [Git book] User Memory 시스템 콜을 구현하기 위해서는 가상 주소 공간에 데이터를 읽고 쓰는 방법을 제공해야한다. 인수를 가져올 때는 이러한 기능이 필요하지 않다. 그러나 시스템 콜의 인수로 olive-su.tistory.com Process related: halt, exit, exec, wait, fork File related: create, remove, open, filesize, read, write, seek, tell, close 🎯 Goal Modified files threads/thread.h threads/thread.c us..
2023.01.02
no image
Project 2. System Calls 구현 (1) - 개요
1. [Git book] User Memory 시스템 콜을 구현하기 위해서는 가상 주소 공간에 데이터를 읽고 쓰는 방법을 제공해야한다. 인수를 가져올 때는 이러한 기능이 필요하지 않다. 그러나 시스템 콜의 인수로 제공된 포인터에서 데이터를 읽을 때는 해당 기능을 통해 구현되어야한다. 유효하지 않은 포인터 커널 메모리에 대한 포인터 부분적으로 해당 영역 중 하나에 블록 제공 2. [Git book] System Calls 수정 파일 : userprog/syscall.c 시스템 콜 번호, 시스템 콜 인수를 적절히 사용해서 작업을 수행해야 한다. System Call Details 프로젝트 1 : 외부 인터럽트를 이미 구현했다. Timers, I/O devices 프로젝트 2에서는 프로그램 코드에서 발생하는 ..
2023.01.02
no image
Project 1. Priority Scheduling 구현 (2)
➡️ 과제 설명(Gitbook) Priority Scheduling [Krafton Jungle | TIL_22.12.20] Project 1. Priority Scheduling 구현 (1) ➡️ 과제 설명(Gitbook) Priority Scheduling 🎯 Goal - 우선 순위 스케줄링과 우선 순위 기부를 구현하라 - 'threads/thread.c' 에서 'thread_set_priority' 와 'thread_get_priority' 를 구현하라 현재 실행 중인 스레드보 olive-su.tistory.com ➡️ 구현 [Section 2] Semaphore 📌 코드부분은 한글 주석을 달아놓은 부분이 추가된 부분입니다! 🎯 Goal Functions to modify sema_down() : ..
2022.12.28
no image
Project 1. Priority Scheduling 구현 (1)
➡️ 과제 설명(Gitbook) Priority Scheduling 🎯 Goal - 우선 순위 스케줄링과 우선 순위 기부를 구현하라 - 'threads/thread.c' 에서 'thread_set_priority' 와 'thread_get_priority' 를 구현하라 현재 실행 중인 스레드보다 우선 순위가 높은 스레드가 레디 리스트에 추가되면 현재 스레드는 즉시 프로세서를 새 스레드에게 양보해야한다. 스레드가 락, 세마포, 상황 변수를 기다리고 있을 때 우선 순위가 가장 높은 대기 스레드가 먼저 깨어나야한다. 스레드는 언제든지 자신의 우선 순위를 높이거나 낮출 수 있지만 해당 스레드가 더 이상 가장 높은 우선 순위를 가진 스레드가 아니라면 바로 CPU를 양보해야한다. 스레드 우선 순위의 범위 : PRI..
2022.12.26
no image
Project 1. Alarm Clock 구현
➡️ 과제 설명(Gitbook) Alarm Clock 🎯 Goal - 'devices/timer.c' 에 정의된 'timer_sleep()' 을 재구현하라. - busy wait(현재 방식)를 피하는 방식으로 다시 구현하라 이미 작동되는 구현 형태가 존재하지만 해당 형태는 busy waits 이다. 많은 시간이 흐른 뒤에야 현재 시간을 체킹하고 thread_yield() 를 호출한다. void timer_sleep(int64_t ticks); 최소 x 시간 타이머 tick만큼 진행될 때까지 스레드 호출을 중단한다. 시스템이 유휴상태가 아닌 한 스레드는 정확히 x 타이머 tick 후에 깨어날 필요가 없다. 적절한 시간 동안 대기한 후, 레디 큐에 넣으면 된다. timer_sleep 은 실시간으로 작동하는 ..
2022.12.24
no image
PintOS 시작하기 + Project 1 개요
우선 PintOS 는 2004년 스탠포드 대학에서 만들어진 교육용 운영체제라고 한다. 해당 과정은 KAIST 에서 진행하는 KAIST PintOS 과정으로 진행된다. https://casys-kaist.github.io/pintos-kaist/ 처음에는 너무 방대한 양의 이론들과 자료들이 넘쳐나서.. 뭐부터 공부해야할지 갈피가 안잡혔는데 우선 코치님들이 PintOS 바이블이라고 설명해주신 Gitbook -> KAIST 강의 -> 한양대 강의 자료를 보고 프로젝트 진행의 갈피를 잡을 수 있었다. 1. PintOS 에서의 GDB 사용법 -g 옵션을 사용해서 컴파일 해야한다. 적절한 정보를 포함한 컴파일이 가능하다. GDB 실행 gdb [file] gdb로 인자 넘기기 (gdb) set args argumen..
2022.12.23
no image
Chapter 11. Network Programming
11.1 The Client-Server Programming Model 서버-클라이언트 모델 서버 프로세스는 한 개 또는 여러 개의 클라이언트 프로세스로 구성된다. 서버 : 리소스 관리, 리소스 조작 → 클라이언트를 위한 서비스 제공 서버-클라이언트의 근본적인 연산은 ‘트랜잭션’이다. 아래와 같은 총 4가지 스텝으로 트랜잭션이 이루어진다. ⚠️ 클라이언트와 서버는 프로세스이며, 머신이나 호스트는 아니다. 11.2 Networks 클라이언트와 서버는 별도의 호스트에서 돌아가며, 컴퓨터 네트워크의 H/W 및 S/W를 사용해서 통신한다. 호스트에게 네트워크는 또 다른 I/O 디바이스 이다. I/O bus의 확장 슬롯에 어댑터가 꽂혀있으며, 네트워크에 물리적인 인터페이스를 제공한다. 네트워크에서 수신한 데이터..
2022.12.20
no image
Team Session - File Descriptor(FD)
파일 디스크립터(FD, File Descriptor) 네트워크 소켓과 같은 파일이나 기타 입/출력 리소스에 액세스하는 데 사용되는 추상표현 ‘0이 아닌 정수’ (’Non-negative Integer’) : 음수가 아닌 0과 양수인 정수 값 음수는 오류 조건을 나타내기 위해 예약된다. 시스템으로부터 할당받은 파일이나 소켓을 대표하는 정수 POSIX API 정수 값 이름 0 표준 입력(stdin) 1 표준 출력(stdout) 2 표준 에러(stderr) 위의 3가지 디스크립터는 프로그램이 프로세스로 메모리에서 실행을 시작할 때 언제나 열린 채로 동작한다. ⚠️ 프로그램에서 파일 디스크립터를 참조할 때는 번호를 쓸 수도 있지만 가능하면 ‘UNISTD.h’ 에 POSIX 이름을 쓰는 편이 좋다. 1. [fil..
2022.12.11