전체 글 41

PintOS의 메모리에 관한 공부

Pintos에서 메모리 할당 전략은 주로 페이지 단위로 이루어지며, 물리 메모리와 가상 메모리 시스템을 효과적으로 관리하기 위한 다양한 기법을 사용합니다.1. 커널 메모리 할당 (Kernel Memory Allocation)Pintos의 커널은 페이지 단위로 메모리를 할당합니다. 이는 운영 체제 자체가 사용하는 메모리나 커널 내에서 필요로 하는 메모리를 할당하는 과정에서 이루어집니다.페이지 할당 (Page Allocation): 커널은 palloc_get_page()와 같은 함수로 물리 메모리에서 페이지를 할당합니다. 이 함수는 물리 메모리에서 사용할 수 있는 페이지를 찾아 반환하며, 페이지는 일반적으로 4KB 크기의 고정된 메모리 블록입니다.프레임 할당 (Frame Allocation): 페이지는 물리..

WIL/스터디 2024.09.10

File System

파일 시스템의 경우 FAT 부분과 파일/디렉토리로 나뉘어져 있습니다. 파일과 디렉토리 내용에 관해서는 이미 우리가 OS를 사용하면서 써왔기 때문에 친숙한 개념이라 생각하여 생략하고, FAT와 Inode 아키텍쳐에 관한 설명과 저희가 어떤 식으로 파일시스템을 구현했는지를 정리했습니다.  기존의 Pintos는 freemap을 사용한 형태로 디스크를 사용하고 있습니다. freemap은 bitmap이라고 이해하시면 됩니다. 그래서 기존의 파일 시스템은 그림과 같이 단편화가 발생해 있으면 Data가 들어갈 수 없습니다. 따라서 우리는 disk를 효율적으로 사용하기 위해 bitmap에서 fat 방식으로 파일시스템을 수정하게 됩니다. FAT란 File Allocate Table의 약자로 빈 Sector를 찾아 데이터..

Copy on Write (CoW)

Project 3의 Extra 과제인 Copy on Write에 관해 알아보겠습니다. 먼저, Git book에서는 copy on write에 대해 다음과 같이 정의하고 있습니다.  그래서 fork를 할 때에는 새로운 물리 페이지를 할당하지 않고 부모와 같은 물리 페이지를 매핑만 해주었다가 추후에 write를 시도할 때에만 새로운 물리 페이지를 할당해 주면 되는 것입니다. 우리는 filebacked Page의 경우에 이미 같은 물리 메모리를 공유하도록 구현했기 때문에 여기서 힌트를 얻을 수 있었습니다. 기존에 우리 프로그램은 이 페이지가 작성가능한지만을 검사하고 있었습니다. 그런데 이 페이지가 원래 부모 프로세스가 만들어 놓은 Anonymous Page이고 fork된 프로세스에서 write 하려고 한다면 ..

System Call

User Program 주의 주 개념인 System Call을 핀토스에서 어떻게 처리하는 지에 대해 간략하게 알아보았습니다.  먼저 System Call이 어떻게 동작하는지 대략적으로 그려보았습니다. 유저 모드에서 동작을 하고 있던 프로세스가 read나 write같은 함수에서 system call을 호출 시 syscall entry shell을 통해 현재 CPU의 동작하던 내용을 user stack에 저장한 후 커널로 넘어가게 됩니다. 그 후 syscall_handler에서 system call 함수를 실행하고, ret를 통해 다시 유저 모드로 돌아와 작업을 재개합니다.  유저 함수에서 어떠한 동작을 하다가 system call을 호출하는 경우가 발생할 수 있습니다. Pintos에서는 저희가 유저 함수를..

Multi-Level Feedback Queue Scheduler

핀토스 1주차 Option 과제인 Advanced Scheduler를 구현해봤습니다. 기존의 Priority Scheduler의 경우에는 우선 순위가 낮은 스레드가 오랫동안 CPU를 점유하지 못하는 문제가 발생할 수 있습니다. 이로 인해 스레드의 평균 반응 시간이 너무 길어지는 문제가 발생합니다. 이를 해결 하기 위한 방법으로 multi-level feedback queue scheduler가 제시되었습니다. MLFQS는 Priority에 따라 여러 개의 Ready Queue가 존재하고, Priority에 영향을 주는 변수가 있어서 Feedback으로 Priority를 조절할 수 있습니다. 이 때, multi level까지는 구현하기 힘들 것 같아서 Feedback만 구성을 해봤습니다. 사실 상 feed..

OS 지식

OS의 일반적인 작동 원리운영 체제는 컴퓨터 하드웨어와 소프트웨어 간의 중재자 역할을 하며, 시스템 자원을 효율적으로 관리하고 사용자와 애플리케이션이 이를 쉽게 사용할 수 있도록 도와줍니다.운영 체제의 주요 기능은 다음과 같습니다:프로세스 관리: 운영 체제는 여러 프로그램이 동시에 실행될 수 있도록 CPU 시간을 할당하고, 각 프로세스 간의 자원 충돌을 방지하며, 문맥 전환을 통해 효율적으로 멀티태스킹을 지원합니다.메모리 관리: 운영 체제는 각 프로세스에 필요한 메모리를 할당하고, 가상 메모리 기법을 통해 물리적 메모리를 효율적으로 사용합니다. 이를 통해 메모리 부족 시에도 프로그램이 원활히 실행될 수 있도록 합니다.파일 시스템 관리: 운영 체제는 데이터를 파일 단위로 저장하고, 이를 디렉터리 구조로 관..

WIL/스터디 2024.08.27

인터넷 지식

인터넷의 작동 원리먼저, 인터넷에 연결된 각 장치는 고유한 IP 주소를 가지고 있으며, 사용자가 웹사이트에 접근할 때는 도메인 이름을 통해 IP 주소를 찾아냅니다. 이 과정은 DNS 서버를 통해 이루어집니다.데이터는 작은 패킷으로 나뉘어 전송되며, 각 패킷은 라우터를 통해 목적지까지 전달됩니다. 이때 TCP/IP 프로토콜이 데이터를 신뢰성 있게 전달하는 역할을 합니다.사용자가 웹사이트를 요청하면, 클라이언트는 서버에 HTTP 또는 HTTPS 요청을 보내고, 서버는 요청에 따라 웹 페이지나 데이터를 응답합니다. 이러한 모든 과정은 ISP를 통해 이루어집니다. HTTP란?HTTP(HyperText Transfer Protocol)는 웹에서 클라이언트와 서버 간에 데이터를 주고받기 위한 표준 프로토콜입니다. ..

WIL/스터디 2024.08.27

Thread & Process

Alarm Clock최초에 Busy Waiting으로 구현. 이는 특정 조건이 충족될 때까지, 프로세스나 스레드는 루프를 돌며 해당 조건을 지속적으로 확인합니다. 이 과정에서 CPU는 계속해서 이 루프를 실행하게 되어, 해당 프로세스나 스레드가 CPU를 점유한 상태가 됩니다. 때문에 이러한 방식은 CPU 자원을 낭비하게 되고, 이를 Sleep Awake 방식으로 수정하게 됨.Thread Scheduler핀토스의 스케줄러는 Round Robin으로 구현되어 있습니다. 이는 중요도에 상관없이 모든 스레드를 번갈아가며 수행합니다. 이를 Priority Scheduler로 수정하고 Donation 기능을 넣는다던가 하는 방식으로 수정하게 됩니다. 저는 Extra 과제인 Multi Level Feedback Qu..

WIL/스터디 2024.08.25

Malloc Lab

Mallocmalloc은 지정된 크기만큼의 메모리를 할당하고 할당된 메모리의 시작주소를 반환한다.이 때, 할당된 메모리는 초기화되지 않기 때문에 그 위치에 저장된 값들이 남아 있을 수 있다. Calloccalloc은 malloc과 같이 메모리를 할당해주지만, 할당된 메모리의 값을 모두 0으로 초기화한다. Implicit Malloc (암시적)프로그래머가 직접 메모리 할당을 지시하지 않아도 컴파일러 혹은 런타임이 자동으로 메모리를 할당하는 경우. 보통 가비지 컬렉션이 있는 언어인 Java나 Python에서 객체를 생성할 때 명시적으로 메모리 할당을 하지 않아도 된다. 내부 단편화가 발생할 수 있고 속도가 상대적으로 느리다. Explicit Malloc (명시적)프로그래머가 직접 메모리 할당을 지시하고, 할..

WIL/스터디 2024.08.25

Virtual Memory

가상메모리란 무엇인가?물리 메모리(RAM)에 한계가 있기 때문에 이를 보완하기 위해 만든 것이 가상 메모리입니다. HDD나 SSD의 자원을 끌어다써서 메모리 공간을 추상화시켜 OS가 자신의 메모리가 마치 무한한 것처럼 사용할 수 있게 해줍니다. 1. 페이지페이지는 가상 메모리에서의 기본 단위입니다. 운영 체제는 각 프로세스에 가상 메모리 공간을 제공하며, 이 가상 메모리 공간은 일정한 크기의 페이지로 나뉩니다. 페이지는 프로세스가 사용하는 메모리 블록을 의미하며, 가상 주소 공간에서 특정 범위의 주소를 나타냅니다.2. 프레임프레임은 물리 메모리(RAM)에서의 기본 단위입니다. 물리 메모리는 프레임이라는 고정된 크기의 블록으로 나누어져 있으며, 각 프레임은 가상 메모리의 페이지와 매핑됩니다.3. 페이지 테..

WIL/스터디 2024.08.23