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 (+ 디스크 스왑) 가상화를 통해 각자의 가상 주소 공간을 사용할 수 ..
-
Virtual Memory란?Operating System 2025. 5. 30. 14:21
Project 2까지는 프로세스 실행 시 'eager loading' 방식을 사용했다. 즉, load()하면 코드와 데이터 세그먼트를 한번에 물리 메모리 주소(pa, physical address)에 할당하고, 이를 가상 메모리 주소(va, virtual address)와 매핑했다. 하지만 이 방식은 프로세스가 물리 메모리를 아주 비효율적으로 사용한다는 단점이 있다. 프로세스 전체를 한 번에 물리 메모리에 올리면 유한한 영역을 다른 프로세스와 효율적으로 공유할 수 없다. 예를 들어, CPU를 사용하지 않고 대기 중인 프로세스가 메모리를 점유하고 있어 다른 프로세스를 실행시킬 수 없거나, 실제로는 사용되지 않는 코드나 데이터가 불필요하게 메모리에 올라가 있는 경우가 발생할 수 있다. 이런 상황은 메모리 ..