[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..
[Pintos-Kaist] Project2 - System Call(1) - (halt, exit, create, remove)
·
운영체제
과제 목표 시스템 콜 핸들러 및 시스템 콜(halt, exit, create, remove) 구현 과제 설명 핀토스는 시스템 콜 핸들러가 구현되어 있지 않아 시스템 콜이 처리되지 않음. 핀토스의 시스템 콜 메커니즘을 이해하고 시스템 콜 핸들러를 구현한다. 시스템 콜(halt, exit, createm remove)을 구현하고 시스템 콜 핸들러를 통해 호출한다. 💡 시스템 콜 시스템 콜은 운영 체제가 제공하는 서비스에 대한 프로그래밍 인터페이스입니다. 시스템 콜은 커널모드에서 실행되고, 처리 후 사용자 모드로 복귀됩니다. 시스템 콜의 핵심은 시스템 콜 호출 시, 하드웨어 인터럽트가 발생하여 실행모드 의 우선순위가 특수모드로 상향조정 되는 것입니다. 유저 프로그램에서 write() 함수를 호출한다. writ..
[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() 함수에서 함수 호출 규약에 따라 유저 스택에 프로그램 이름과 인자들..
[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..
[운영체제] 동시성(Concurrency)과 병렬성(Parallelism)
·
운영체제
💡 동시성(Concurrency)이란? 동시성은 여러 작업이 동시에 실행되는 것 처럼 보이지만 실제로는 하나의 프로세스에서 여러 작업이 번갈아가면서 실행됩니다. 작업은 짧은 시간 동안 실행되고 중단되며, 다른 작업이 실행됩니다. 동시성은 작업을 빠르게 전환하여 여러 작업을 동시에 처리하는 것처럼 보이게 합니다. 이는 프로그래밍에서 비동기적인 작업이나 이벤트 기반 프로그래밍에서 주로 사용됩니다. 💡병렬성(Parallelism)이란? 병렬성은 여러 프로세서가 동시에 작업을 처리하며 여러 작업이 실제로 동시에 실행되는 개념입니다. 작업은 독립적으로 실행되며, 각각의 프로세서에서 병렬로 처리됩니다. 병렬성은 특히 대규모의 계산 작업이나 데이터 처리 작업에서 성능을 향상시키는 데 사용됩니다. 동시성 vs 병렬성 ..
[운영체제] 프로세스(Process)와 스레드(Thread)
·
운영체제
✔️ 프로세스란? 프로세스는 운영 체제에서 실행 중인 프로그램을 나타내는 단위입니다. 프로세스 내부에는 최소 하나의 스레드(thread)를 가지고 있는데, 실제로는 스레드(thread) 단위로 스케줄링을 한다. 각 프로세스는 독립된 메모리 공간을 할당받아 실행되며, 운영 체제는 프로세스를 생성, 제어, 종료하고 여러 프로세스 간의 상호작용을 관리합니다. 프로세스의 메모리 영역은 Code, Data, Heap, Stack 등을 가지고 있습니다. ✔️ 프로세스의 상태 실행(Running) : 현재 CPU에서 실행중인 상태입니다. 준비(Ready) : 실행 가능한 상태로, CPU를 할당받기 위해 대기 중인 상태입니다. 대기(Blocked, Waiting, Sleep) - 특정 이벤트 발생을 기다리는 상태로, ..
yunchan^.^
'운영체제' 태그의 글 목록