컴퓨터 시스템30 [CS] Kaist PintOS User Programs, System Call #5 이 문서는 카이스트 핀토스 원유집 교수님의 강의를 참고하여 작성하였습니다 Pintos Project2 systemcal User program에서 write를 호출하면 syscall.c에 있는 write함수를 호출한다. write함수는 syscall3 함수를 호출한다. syscall3함수는 3개의 인자를 받아 User Stack에 쌓고 Interrupt Vector Table의 syscall_handler를 호출한다. 프로젝트에서 구현할 부분은 syscall_handler의 내용이다. 여기 채워져야할 systemcall의 'number'는 syscall_nr.h에 정의되어있다. System call handler 구현 목표 1. system call handler가 system call number를 사.. 2022. 12. 27. [CS] Kaist PintOS User Programs, Passing the arguments #4 이 문서는 카이스트 핀토스 원유집 교수님의 강의를 참고하여 작성하였습니다. 이 문서는 카이스트 핀토스 프로젝트 가이드라인을 정리한 글입니다. Part 2 : User Program 현재 핀토스는 명령어 전체 한 줄을 통째로 읽는다. 'echo x y z' thread name : 'echo x y z' find program with file name : 'echo x y z' arguments : 'echo', 'x', 'y', and 'z' are not passed 각각의 인자가 구분되도록 수정해야한다. thread name : 'echo' find program with file name : 'echo' pushl the arguments(x, y, z) to user stack. 수정해야 하는 .. 2022. 12. 23. [CS] Kaist PintOS User Programs, 프로그램 구조 설명 #3 이 문서는 카이스트 핀토스 원유집 교수님의 강의를 참고하여 작성하였습니다. 이 문서는 카이스트 핀토스 프로젝트 가이드라인을 정리한 글입니다. Part 2 : User Program 1. 핀토스(다른 운영체제가 그러하듯)는 프로세스 실행을 위해 인수를 얻고 함수를 호출한다. run_task(char ** argv) 함수는 process_excute(argv)를 호출한다 2. 프로세스가 실행되면 어떠한 기능을 가진 스레드를 생성한다. process_excute(const char *file_name) 함수는 thread_create(.. start_process...)를 호출한다. 3. 여기서 주목할 점은 처음 호출되는 run_task(char **argv)에서 프로세스 실행 함수를 인자로 받는 proces.. 2022. 12. 23. [CS] Kaist PintOS THREAD, Priority Scheduling #2 이 문서는 카이스트 핀토스 원유집 교수님의 강의를 참고하여 작성하였습니다. 이 문서는 카이스트 핀토스 프로젝트 가이드라인을 정리한 글입니다. Part 1 : Threads 다음 세 가지를 구현한다. 1. Alarm clock 2. Priority scheduling 3. Advanced scheduler #2 Priority scheduling 이번 과제에서는 다음 3가지는 구현해야 한다. 1. 스레드 우선순위에 다른 ready_list 정렬 2. 동기화 요소에 따른 wait_list 정렬(semaphore, condition variable) 3. preemption 구현 PintOS의 우선순위 수준은 0(PRI_MIN)에서 63(PRI_MAX)으로 64 계층으로 이루어져 있다. 숫자가 높을수록 우선순.. 2022. 12. 19. [CS] Kaist PintOS THREAD, Alarm clock #1 이 문서는 카이스트 핀토스 원유집 교수님의 강의를 참고하여 작성하였습니다. 이 문서는 카이스트 핀토스 프로젝트 가이드라인을 정리한 글입니다. Part 1 : Threads 다음 세 가지를 구현한다. 1. Alarm clock 2. Priority scheduling 3. Advanced scheduler #1 Alarm clock timer_sleep void timer_sleep (int64_t ticks) { int64_t start = timer_ticks (); while (timer_elapsed (start) < ticks) thread_yield (); } start변수에 현재 시간을 저장한다. timer_elapsed(time) : 들어온 인자로부터 얼마의 시간이 지났는지 반환한다. 이후 .. 2022. 12. 17. [CS] 쉽게 배우는 운영체제 Chapter03 #1 이 문서는 유튜브 '널널한 개발자 TV'님의 강의를 토대로 작성되었습니다. 프로세스 스케줄링에서 부족한 학습을 위해서 키워드를 추가 학습하여 정리했다. Context Switching 프로세스 큐에서 구별해야 할 3가지의 상태가 있다. 1. Ready-Queue : 자원을 사용하기위해 대기열에서 기다리는 상태 2. Sleep(ms) : 자발적으로 ms 시간만큼 대기열(ready-queue)에서 이탈하고 Queue에 합류. 3. Suspend : 타의적으로 대기열(ready-queue)에서 이탈됨 - swap 시점 - 오류로 인해서 프로세스가 죽었을 때 - 등등 의 이유로 suspend상태가 된다. 프로세스가 중단된 이후 다시 흐름을 이어가기 위해서 필요한 것이 '문맥'이다. 문맥이 바뀌는 것을 Conte.. 2022. 12. 17. [CS] Process Synchronization and Mutual Exclusion #3 이 포스팅은 한국기술교육대학교 김덕수 교수님의 운영체제 강의를 참고하여 작성되었습니다. Mutual Exclusion Solutions SW solutions • Dekker’s algorithm (Peterson’s algorithm) • Dijkstra’s algorithm, Knuth’s algorithm, Eisenberg and McGuire’s algorithm, Lamport’s algorithm HW solution • TestAndSet (TAS) instruction OS supported SW solution • Spinlock • Semaphore • Eventcount/sequencer Language-Level solution • Monitor 소프트웨어 솔루션이 있었기 때문에 .. 2022. 12. 16. [CS] Process Synchronization and Mutual Exclusion #1 이 포스팅은 한국기술교육대학교 김덕수 교수님의 운영체제 강의를 참고하여 작성되었습니다. Mutual Exclusion Solutions SW solutions • Dekker’s algorithm (Peterson’s algorithm) • Dijkstra’s algorithm, Knuth’s algorithm, Eisenberg and McGuire’s algorithm, Lamport’s algorithm HW solution • TestAndSet (TAS) instruction OS supported SW solution • Spinlock • Semaphore • Eventcount/sequencer Language-Level solution • Monitor 동기화 (Synchronizatio.. 2022. 12. 16. [CS] Process Scheduler #4 이 포스팅은 한국기술교육대학교 김덕수 교수님의 운영체제 강의를 참고하여 작성되었습니다. 기본 스케줄링 알고리즘 • FCFS (First-Come-First-Service) • RR (Round-Robin) • SPN (Shortest-Process-Next) • SRTN (Shortest Remaining Time Next) • HRRN (High-Response-Ratio-Next) • MLQ (Multi-level Queue) • MFQ (Multi-level Feedback Queue) MLQ (Multi-level Queue) 작업 (or 우선순위)별 별도의 ready queue를 가짐 - 최초 배정 된 queue를 벗어나지 못함 - 각각의 queue는 자신만의 스케줄링 기법 사용 Queue 사이.. 2022. 12. 16. 이전 1 2 3 4 다음