Operating System
-
[운영체제: 아주 쉬운 세 가지 이야기] 4장 - 프로세스의 개념Operating System 2025. 8. 8. 15:49
프로세스 == 실행 중인 프로그램 [프로세스 API] - 생성 (예: fork(), exec()) - 제거 (예: exit()) - 대기 (예: wait()) - 각종 제어 (예: kill(), signal(), suspend(), resume()) - 상태 (예: ps(), getpid(), getppid(), proc filesystem) [프로세스 생성]프로그램 -> 프로세스로 전환시키려면 어떻게 해야할까? 어떻게 프로그램을 준비하고 실행시켜야할까?1. 프로그램 코드와 정적 데이터를 메모리, 프로세스의 주소 공간에 load (lazy loading, paging, swapping)2. 지역 변수, 함수 인자, 리턴 주소 등의 정적 데이터를 저장하기 위해 스택 할당3. 가변적인 자료 구조를 저장하기 ..
-
[운영체제: 아주 쉬운 세 가지 이야기] 2장 - 운영체제 개요Operating System 2025. 8. 8. 14:58
프로그램은 프로그램이 수행해야 할 명령어가 소진될 때까지 명령어 반입(fetch), 해석(decode), 실행(execute)을 반복한다.그리고 프로그램의 실행 제어, 프로그램 간 메모리 공유, 프로그램과 장치간 상호작용을 가능케 하는 것이 바로 운영체제다!운영체제가 하는 일1. 물리자원 가상화 => 운영체제를 '가상머신' 이라고도 함 1) CPU 가상화 : 실제 CPU 는 제한되어있지만 마치 무한대의 CPU가 제공되어 모든 프로세스가 동시에 실행되는 것처럼 보이게 함 * 시분할(time-sharing)을 통해 CPU를 여러 프로세스에 분할 2) 메모리 가상화 : 각 프로세스는 운영체제의 물리 RAM (+ 디스크 스왑) 가상화를 통해 각자의 가상 주소 공간을 사용할 수 ..
-
[정글 WEEK12~13] Virtual Memory gitbook 분석 - Memory ManagementOperating System 2025. 5. 31. 01:52
VM 시스템을 지원하려면 가상 페이지와 물리적 프레임을 효과적으로 관리해야한다. 즉, 어떤 메모리 영역을 어떤 목적으로, 누가 사용하는지 등을 추적해야 한다. 📄 page 구조체VM 시스템에서 하나의 유저 페이지를 추상화하는 구조체다. 이 페이지가 어떤 성격을 갖는지에 따라 내부 동작이 달라지기 때문에 'union'을 이용해 uninit_page, anon_page, file_page 중 하나의 타입만 사용한다. struct page { const struct page_operations *operations; // 페이지에 적용할 동작들 (type-specific ops) void *va; // 유저 공간의 가상 주소 struct frame *frame;..
-
Virtual Memory란?Operating System 2025. 5. 30. 14:21
Project 2까지는 프로세스 실행 시 'eager loading' 방식을 사용했다. 즉, load()하면 코드와 데이터 세그먼트를 한번에 물리 메모리 주소(pa, physical address)에 할당하고, 이를 가상 메모리 주소(va, virtual address)와 매핑했다. 하지만 이 방식은 프로세스가 물리 메모리를 아주 비효율적으로 사용한다는 단점이 있다. 프로세스 전체를 한 번에 물리 메모리에 올리면 유한한 영역을 다른 프로세스와 효율적으로 공유할 수 없다. 예를 들어, CPU를 사용하지 않고 대기 중인 프로세스가 메모리를 점유하고 있어 다른 프로세스를 실행시킬 수 없거나, 실제로는 사용되지 않는 코드나 데이터가 불필요하게 메모리에 올라가 있는 경우가 발생할 수 있다. 이런 상황은 메모리 ..
-
[정글 Week10~11_PintOS] User Program 구현 MilestoneOperating System 2025. 5. 15. 15:43
1. 협업 방식 논의 - 티켓 관리 툴: 깃헙 Projects - 깃헙 커밋 컨벤션: 깃모지 타입(파일명): 작업 내용 설명 예시: ✨ feat(threads.c): alarm clock [타입] • ✨ feat: 새로운 기능 추가 • 🐛 fix: 버그 수정 • ⏪️ revert: 변경 내용 되돌리기 • 🧹 chore: 자잘한 수정이나 빌드 업데이트 • ♻️ refactor: 리팩토링 - 페어 프로그래밍 규칙: 각자 분담받은 티켓 단위로 기능을 구현하다가 어렵거나 같이 논의해서 구현하고 싶다면 페어 프로그래밍 요청 - 스크럼(오후 1시 반): 전날 ~ 오전까지 한 일, 앞으로 반나절동안 할 일 공유 - 코어타임(오후 8시 반): 스크럼..
-
[밑바닥부터 만드는 컴퓨팅 시스템 2판] 스터디 - 1, 2장Operating System 2025. 3. 2. 23:51
1장: 논리 게이트와 조합 논리 회로기초적인 논리 게이트인 Nand를 활용하여 Not, And, Or, Xor 게이트, 멀티플렉서(Mux), 디멀티플렉서(DMux)를 구성한다.Not, And, Or, Xor은 기본적인 논리 연산자를 구현하고, Mux와 DMux는 데이터 흐름을 제어한다.1. 새롭게 알게 된 내용게이트별 논리Nand (Not-And): 부정 논리곱if ((a == 1) and (b == 1)) then out = 0, else out = 1And: 논리곱if ((a == 1) and (b == 1)) then out = 1, else out = 0Or: 논리합if ((a != 1) and (b != 1)) then out = 0, else out = 1Not (Inverter): 논리부정i..