핀토스는 아직은 단일 프로세스로 진행된다.main 함수라는 하나의 문맥 안에 멀티쓰레드로 프로그램을 실행한다.즉, os는 여러 개의 쓰레드를 관리해야한다.핀토스는 한 번에 하나의 스레드만을 실행하기 때문에 실행되는 스레드를 제외하고는 모두 비활성화된다. 다음 실행할 스
PintOS(핀토스)는 교육 목적으로 설계된 운영 체제(OS) 커널이다.정글 8주차부터는 핀토스에서 필요한 기능을 구현하며 운영 체제의 핵심 개념을 학습한다.\[\[CSAPP출처: https://eun-jeong.tistory.com/17 흔들리며 피는 꽃:티
세마포어로 자식스레드가 종료되기까지 대기하도록 구성했다.스레드 exit에서는 새로 스케줄링하기 전에 세마포어를 up시켜서 대기하는 부모스레드가 스레드가 종료되었음을 알 수 있도록한다.자식스레드가 모두 종료되기 전, 세마포어를 up하면서 부모스레드로 cpu를 양보하는 상
핀토스 프로젝트2 시스템콜 구현 중시스템 콜 구현 중 파일 읽기 시 lock을 사용한 코드를 보았다.Pintos에서는 lock이 굳이 필요가 없을 것 같아서 생각을 정리해보았다.lock이 필요한 이유: 프로세스 내에서 파일 디스크립터마다 위치가 존재한다. read함수는
세그멘테이션과 페이징을 설명하기 전 먼저 고전적이고 기초적인 가상주소할당방식을 이야기해야 한다.동적 재배치 dynamic relocation 또는 베이스와 바운드 base and bound라고 불리는 방식은 베이스 레지스터와 바운드 레지스터를 이용해서 가상 주소공간을
페이징 방식의 가장 큰 단점은 페이지 테이블을 참조하는 과정에서 다시 메모리에 접근해야 한다는 것이다.즉, 페이지 테이블에 접근->물리 주소로 번역->메모리에 접근과 같이 원하는 메모리에 접근하기 위해 메모리를 적어도 두 번 참조해야 하며 이는 큰 성능 저하를 유발한다
세그멘테이션 또는 페이징을 적용하여 동적 재배치에 비해 내부 단편화를 줄였다.그럼에도 불구하고 실제 시스템에서는 여러 프로세스들이 사용하는 페이지를 모두 물리 메모리에 탑재하기에는 물리 메모리 공간이 모자란 경우가 대부분이다.이런 물리 메모리 공간의 한계를 극복하기 위