분류 전체보기
-
지난 시스템 콜 기능 구현 포스트에서는 exec, fork, wait을 제외한 기능들을 구현했습니다. 관련 내용은 아래 포스트 참고하시길 바랍니다. https://yunchan97.tistory.com/73 [Pintos-Kaist] Project2 - System Call(3) -(write, putbuf, open, process_add_file, process_get_file, read, filesize, seek, tell, 지난 포스트에서는 전체적인 코드의 흐름을 파악하는 과정을 봤습니다. 아래 포스트에 이어서 다음 기능을 구현해보겠습니다. https://yunchan97.tistory.com/71 [Pintos-Kaist] Project2 - System Call(1) - (halt, exit..
[Pintos-Kaist] Project2 - System Call(4) - (exec, fork, wait)지난 시스템 콜 기능 구현 포스트에서는 exec, fork, wait을 제외한 기능들을 구현했습니다. 관련 내용은 아래 포스트 참고하시길 바랍니다. https://yunchan97.tistory.com/73 [Pintos-Kaist] Project2 - System Call(3) -(write, putbuf, open, process_add_file, process_get_file, read, filesize, seek, tell, 지난 포스트에서는 전체적인 코드의 흐름을 파악하는 과정을 봤습니다. 아래 포스트에 이어서 다음 기능을 구현해보겠습니다. https://yunchan97.tistory.com/71 [Pintos-Kaist] Project2 - System Call(1) - (halt, exit..
2023.06.11 -
지난 포스트에서는 전체적인 코드의 흐름을 파악하는 과정을 봤습니다. 아래 포스트에 이어서 다음 기능을 구현해 보겠습니다. https://yunchan97.tistory.com/71 [Pintos-Kaist] Project2 - System Call(1) - (halt, exit, create, remove) 과제 목표 시스템 콜 핸들러 및 시스템 콜(halt, exit, create, remove) 구현 과제 설명 핀토스는 시스템 콜 핸들러가 구현되어 있지 않아 시스템 콜이 처리되지 않음. 핀토스의 시스템 콜 메커니즘을 이 yunchan97.tistory.com 구현 순서는 Gitbook 순서를 바탕으로 진행하는데 중간중간 필요한 부분이 있다면 구현하는 방식으로 진행합니다. 구현 1️⃣ int write..
[Pintos-Kaist] Project2 - System Call(3) - (write, putbuf, open, process_add_file, process_get_file, read, filesize, seek, tell, close)지난 포스트에서는 전체적인 코드의 흐름을 파악하는 과정을 봤습니다. 아래 포스트에 이어서 다음 기능을 구현해 보겠습니다. https://yunchan97.tistory.com/71 [Pintos-Kaist] Project2 - System Call(1) - (halt, exit, create, remove) 과제 목표 시스템 콜 핸들러 및 시스템 콜(halt, exit, create, remove) 구현 과제 설명 핀토스는 시스템 콜 핸들러가 구현되어 있지 않아 시스템 콜이 처리되지 않음. 핀토스의 시스템 콜 메커니즘을 이 yunchan97.tistory.com 구현 순서는 Gitbook 순서를 바탕으로 진행하는데 중간중간 필요한 부분이 있다면 구현하는 방식으로 진행합니다. 구현 1️⃣ int write..
2023.06.08 -
지난 Project1 thread를 활용한 과제부터 System call이라는 Project2를 진행하면서 코드들이 점차 많아지면서 전반적인 코드의 흐름을 짚고 가야 할 필요를 느껴서 이번에는 전체적인 코드의 흐름을 다시 잡고 가는 과정을 추가했습니다. 코드의 흐름 init.c → int main(void) → run_actions(argv) → run_task(char **argv) → process_create_initd(task) → thread_create (file_name, PRI_DEFAULT, initd, fn_copy) → initd→process_exec → load, do_iret -> syscall_handler() 전반적인 코드의 흐름은 위와 같고 위 순서대로 분석을 해봅시다. 1..
[Pintos-Kaist] Project2 - System Call(2) - System Call Flow지난 Project1 thread를 활용한 과제부터 System call이라는 Project2를 진행하면서 코드들이 점차 많아지면서 전반적인 코드의 흐름을 짚고 가야 할 필요를 느껴서 이번에는 전체적인 코드의 흐름을 다시 잡고 가는 과정을 추가했습니다. 코드의 흐름 init.c → int main(void) → run_actions(argv) → run_task(char **argv) → process_create_initd(task) → thread_create (file_name, PRI_DEFAULT, initd, fn_copy) → initd→process_exec → load, do_iret -> syscall_handler() 전반적인 코드의 흐름은 위와 같고 위 순서대로 분석을 해봅시다. 1..
2023.06.07 -
과제 목표 시스템 콜 핸들러 및 시스템 콜(halt, exit, create, remove) 구현 과제 설명 핀토스는 시스템 콜 핸들러가 구현되어 있지 않아 시스템 콜이 처리되지 않음. 핀토스의 시스템 콜 메커니즘을 이해하고 시스템 콜 핸들러를 구현한다. 시스템 콜(halt, exit, createm remove)을 구현하고 시스템 콜 핸들러를 통해 호출한다. 💡 시스템 콜 시스템 콜은 운영 체제가 제공하는 서비스에 대한 프로그래밍 인터페이스입니다. 시스템 콜은 커널모드에서 실행되고, 처리 후 사용자 모드로 복귀됩니다. 시스템 콜의 핵심은 시스템 콜 호출 시, 하드웨어 인터럽트가 발생하여 실행모드 의 우선순위가 특수모드로 상향조정 되는 것입니다. 유저 프로그램에서 write() 함수를 호출한다. writ..
[Pintos-Kaist] Project2 - System Call(1) - (halt, exit, create, remove)과제 목표 시스템 콜 핸들러 및 시스템 콜(halt, exit, create, remove) 구현 과제 설명 핀토스는 시스템 콜 핸들러가 구현되어 있지 않아 시스템 콜이 처리되지 않음. 핀토스의 시스템 콜 메커니즘을 이해하고 시스템 콜 핸들러를 구현한다. 시스템 콜(halt, exit, createm remove)을 구현하고 시스템 콜 핸들러를 통해 호출한다. 💡 시스템 콜 시스템 콜은 운영 체제가 제공하는 서비스에 대한 프로그래밍 인터페이스입니다. 시스템 콜은 커널모드에서 실행되고, 처리 후 사용자 모드로 복귀됩니다. 시스템 콜의 핵심은 시스템 콜 호출 시, 하드웨어 인터럽트가 발생하여 실행모드 의 우선순위가 특수모드로 상향조정 되는 것입니다. 유저 프로그램에서 write() 함수를 호출한다. writ..
2023.06.06 -
문제 풀이 1️⃣ 목표지점 2를 찾아서 위치를 저장해둡니다. 2️⃣ 1의 값들을 전부 -1로 바꿔줍니다. 3️⃣ 찾아놓은 목표지점 위치부터 시작해서 bfs 그래프 너비 탐색을 통해서 이동할 수 있는 부분들을 탐색합니다. 4️⃣ 전체 탐색하고 탐색하지 못한부분은 -1로 그대로놔둡니다. 5️⃣ arr에 저장되어있는 값을 출력형식에 맞게 출력합니다. 전체 코드 from sys import stdin as s from collections import deque s=open('input.txt','rt') # bfs 함수부분 def bfs(si,sj): q=deque() q.append((si,sj)) v[si][sj]=1 # 4방향 탐색위한 방향설정 dx=[0,1,0,-1] dy=[1,0,-1,0] while..
[백준] 14940 쉬운 최단거리 [python]문제 풀이 1️⃣ 목표지점 2를 찾아서 위치를 저장해둡니다. 2️⃣ 1의 값들을 전부 -1로 바꿔줍니다. 3️⃣ 찾아놓은 목표지점 위치부터 시작해서 bfs 그래프 너비 탐색을 통해서 이동할 수 있는 부분들을 탐색합니다. 4️⃣ 전체 탐색하고 탐색하지 못한부분은 -1로 그대로놔둡니다. 5️⃣ arr에 저장되어있는 값을 출력형식에 맞게 출력합니다. 전체 코드 from sys import stdin as s from collections import deque s=open('input.txt','rt') # bfs 함수부분 def bfs(si,sj): q=deque() q.append((si,sj)) v[si][sj]=1 # 4방향 탐색위한 방향설정 dx=[0,1,0,-1] dy=[1,0,-1,0] while..
2023.06.06 -
과제 목표 Command line Parsing 기능 구현 과제 설명 Pintos는 프로그램과 인자를 구분하지 못하는 구조로 되어있습니다. ex) /bin/ls -l foo bar 의 경우 null 포인터를 인식하지못하고 문자열 전체로 인식. 명령어를 널포인터 기준으로 단어를 분할해서 /bin/ls, -l, foo, bar로 나눠서 스택에 푸시한다. 스택에 저장된 인자를 응용 프로그램에 전달하는 기능을 구현합니다. 수정 부분 process_create_initd() 함수에서 프로그램을 실행 할 프로세스를 생성합니다. process_exec() 함수에서 프로그램을 메모리에 탑재하고 응용 프로그램을 실행합니다. argument_stack() 함수에서 함수 호출 규약에 따라 유저 스택에 프로그램 이름과 인자들..
[Pintos-Kaist] Project2 - Argument Passing과제 목표 Command line Parsing 기능 구현 과제 설명 Pintos는 프로그램과 인자를 구분하지 못하는 구조로 되어있습니다. ex) /bin/ls -l foo bar 의 경우 null 포인터를 인식하지못하고 문자열 전체로 인식. 명령어를 널포인터 기준으로 단어를 분할해서 /bin/ls, -l, foo, bar로 나눠서 스택에 푸시한다. 스택에 저장된 인자를 응용 프로그램에 전달하는 기능을 구현합니다. 수정 부분 process_create_initd() 함수에서 프로그램을 실행 할 프로세스를 생성합니다. process_exec() 함수에서 프로그램을 메모리에 탑재하고 응용 프로그램을 실행합니다. argument_stack() 함수에서 함수 호출 규약에 따라 유저 스택에 프로그램 이름과 인자들..
2023.06.05 -
운영체제의 동작 과정 (Dual-Mode Execution) - 운영체제는 기본적으로 사용자에게 인터페이스를 제공하는 User Mode와 기기들을 직접 관리하는 Kernel Mode로 구분된다. User Mode : 일반적인 응용프로그램이 구동되는 환경이다. Kernel Mode : 커널이 구동되는 환경이며, 이 모드에서는 OS 시스템에 영향을 주는 명령어를 실행할 수 있다. - Kernel에서의 작업은 컴퓨터의 중요한 부분에 해당하는 작업이기에 사용자가 직접 작업하다가 문제가 생길 시 컴퓨터 전체에 영향을 끼치기 때문에 User Mode와 Kernel Mode로 나눠 사용자가 접근하지 못하게 한다. - 처음 운영체제가 구동되면 초기화 작업 및 부팅 과정에서 필요한 과정들을 수행하기 위해 커널 모드로 시..
[운영체제] 인터럽트 & 시스템 콜(Interrupt, System Call)운영체제의 동작 과정 (Dual-Mode Execution) - 운영체제는 기본적으로 사용자에게 인터페이스를 제공하는 User Mode와 기기들을 직접 관리하는 Kernel Mode로 구분된다. User Mode : 일반적인 응용프로그램이 구동되는 환경이다. Kernel Mode : 커널이 구동되는 환경이며, 이 모드에서는 OS 시스템에 영향을 주는 명령어를 실행할 수 있다. - Kernel에서의 작업은 컴퓨터의 중요한 부분에 해당하는 작업이기에 사용자가 직접 작업하다가 문제가 생길 시 컴퓨터 전체에 영향을 끼치기 때문에 User Mode와 Kernel Mode로 나눠 사용자가 접근하지 못하게 한다. - 처음 운영체제가 구동되면 초기화 작업 및 부팅 과정에서 필요한 과정들을 수행하기 위해 커널 모드로 시..
2023.06.02 -
💡Pintos_8팀 WIL 일별 진행 목록 23.05.26(금) - github team repository 생성 - git clone 후 - AWS환경에서의 Ubuntu18.04 환경설정 23.05.27(토) - Alarm Clock🕰️ 구현 시작 - 목표 : 호출한 프로세스를 정해진 시간 이후에 다시 시작하는 커널 내부 함수 구현 - Busy waiting -> sleep, awake - 쓰레드 디스크립터 필드 추가(wakeup_tick) - 전역 변수 추가(next_tick_to_awake) - thread_init() 함수 수정 - timer_sleep() 함수 수정 23.05.29(월) - thread_sleep() 함수 구현 - timer_interrupt() 함수 수정 - thread_awa..
[Pintos-Kaist] Project 1 - Threads 1주차 학습💡Pintos_8팀 WIL 일별 진행 목록 23.05.26(금) - github team repository 생성 - git clone 후 - AWS환경에서의 Ubuntu18.04 환경설정 23.05.27(토) - Alarm Clock🕰️ 구현 시작 - 목표 : 호출한 프로세스를 정해진 시간 이후에 다시 시작하는 커널 내부 함수 구현 - Busy waiting -> sleep, awake - 쓰레드 디스크립터 필드 추가(wakeup_tick) - 전역 변수 추가(next_tick_to_awake) - thread_init() 함수 수정 - timer_sleep() 함수 수정 23.05.29(월) - thread_sleep() 함수 구현 - timer_interrupt() 함수 수정 - thread_awa..
2023.06.02