이번 주의 키워드는 Virtual Memory, Page Table, Swap in/out, Page Replacement이다. 이번 과제를 진행하면서 가장 힘들었던 점은 함수들이 아주 잘게 쪼개져 있는데, 각 함수가 정확히 어떤 책임을 지고 있는지 파악하고 구분하는 일이었다. 예를 들어 processcleanup()을…
이번 주차 키워드는 다음과 같다: User program, User mode, Kernel mode, System call, Virtual memory layout. syscall()과 doiret()으로 User space와 Kernel space를 넘나드는 방법을 학습했다. Pintos를 진행하며 느끼는 점은, OS라…
이번 주는 대망의 핀토스를 시작했다. 학습 키워드는 다음과 같다: threads, synchronization, priority scheduling, priority inversion, MLFQS(Multi Level Queue Scheduling). 이번 주는 학습에도 구현에도 AI를 전혀 쓰지 않는 방식을 택했다. 원…
프로세스는 물리적 하드웨어를 직접 제어할 권한이 없다. 메모리 접근은 CPU 내부의 Mode bit와 권한 수준(Privilege Level)에 의해 철저히 통제된다. CPU는 명령어의 종류에 따라 실행 권한을 제한한다. 메모리의 상태를 변경하거나 외부 장치를 제어하는 특권 명령어(Privileged Instruction…
파이썬에서 C언어로 넘어오며 익숙해지려고 Linked list의 기본 구조를 바탕으로 포인터와 malloc, free 연습을 했다. 이번 문제들은 그닥 어렵지 않아서 전부 풀 수 있었는데, 그래서인지 오히려 어셈블리어나 내부 구조에 더 관심이 생겼던 것 같다. 어셈블리어로 코드가 어떤 식으로 메모리를 활용하는지 뜯어보고,…
파이썬은 내부적으로 CPython으로 구성되어 있어, C언어의 컴파일 과정을 살펴보면 그 구조를 파악하기 쉽다. 우선 C언어의 컴파일 과정은 다음과 같다: 1. 소스 코드를 Preprocessor가 이 붙은 구문들에 따라 치환하고 붙여넣어 준다. 2. 그렇게 만들어진 .i로 끝나는 새로운 C언어 파일을 컴파일러가 받는다.…