본문 바로가기

전체 글

(494)
📘18. 주소 변환의 원리 📘 주소 변환의 원리🔍 1. 목적: 효율적이고 안전한 가상 메모리 구현운영체제는 **가상 메모리(Virtual Memory)**를 통해 각 프로그램이 자기만의 메모리 공간을 가진 것처럼 보이게 만들고,효율성: 하드웨어(TLB, 페이지 테이블 등)를 이용해 빠르게 실행되고,제어: 프로그램이 자기 메모리만 접근하게 보호하고,유연성: 프로그래머가 쉽게 메모리를 사용할 수 있게 해줌.➡️ 이 모든 것을 가능하게 해주는 게 바로 **주소 변환(address translation)**입니다.   ⚙️ 2. 주소 변환이란?프로그램이 사용하는 가상 주소 → 실제 물리 주소로 변환하는 과정CPU는 메모리에 접근할 때 **가상 주소(Virtual Address)**를 사용하드웨어 + OS는 이를 **물리 주소(Phys..
📘17. 메모리 관리 1. 메모리 공간의 종류📌 1. 스택 메모리 (Stack Memory)자동 메모리 (automatic memory)함수 안에서 선언된 지역 변수는 자동으로 할당 및 해제됨관리 주체컴파일러가 처리함 – 프로그래머가 직접 신경 쓸 필요 없음사용 예int x; 같은 선언문은 스택에 메모리를 할당메모리 해제함수 호출이 끝나면 자동으로 해제됨주의점함수가 끝나면 사라지므로, 반환 후에도 필요한 값은 스택에 두면 안 됨 📌 2. 힙 메모리 (Heap Memory)동적 메모리 (dynamic memory)실행 중 malloc() 등을 통해 직접 명시적으로 할당관리 주체프로그래머가 직접 할당과 해제를 책임져야 함사용 예int *x = (int *) malloc(sizeof(int)); – 정수를 위한 힙 메모리 할당..
📘 16. 주소 공간 🧱 1. 초기 컴퓨터 시스템물리 메모리 1개, 프로세스도 1개. 보호/가상화 없음초기 컴퓨터는 단순했고, 메모리도 단일한 프로그램만 실행.운영체제는 물리 메모리 앞쪽에 상주하고, 프로그램은 그 뒤에서 실행.가상 메모리 없음, 보호 기능도 없음.사용자도 많은 걸 기대하지 않았던 시대.⚙️ 2. 멀티프로그래밍과 시분할멀티 프로그래밍여러 프로세스를 번갈아 실행해 CPU 활용도 증가컴퓨터가 비싸다 보니 여러 사용자가 공유 필요 → 멀티프로그래밍 등장.I/O 작업 중인 프로세스 대신 다른 프로세스를 실행 → CPU 활용도 증가.이후 시분할(time-sharing) 개념 등장 시분할 시스템많은 사용자가 동시에 컴퓨터 사용 → 빠른 응답 필요여러 프로세스를 짧은 시간 간격으로 전환 실행컴퓨터 자원의 활용도를 높이기..
📘15. CPU 가상화에 관한 마무리 대화 🎓 1. CPU 가상화의 기본 개념 정리CPU 가상화란?여러 프로그램이 동시에 실행되는 것처럼 보이게 CPU를 분할해서 사용하는 것.필요한 기법:트랩(Trap): 사용자 프로그램이 시스템 호출이나 예외를 일으킬 때 OS로 제어가 넘어가는 메커니즘트랩 핸들러: 트랩이 발생했을 때 OS가 수행하는 처리 루틴타이머 인터럽트: OS가 주기적으로 제어권을 회수할 수 있도록 하는 장치컨텍스트 스위칭: CPU 상태(레지스터 등)를 저장하고, 다른 프로세스의 상태를 복원 🔄 전체 흐름사용자 코드 실행 중시스템 콜 or 예외 발생 → 💥 TrapCPU → OS에게 제어 넘김 (모드 전환: 사용자 모드 → 커널 모드)OS의 트랩 핸들러 실행처리 완료 후 → 다시 사용자 코드로 복귀  🧠 트랩(Trap)이란?사용자 ..
📘 10장. 멀티프로세서 스케줄링 📘 10장. 멀티프로세서 스케줄링핵심 주제: 여러 CPU 코어가 있을 때, 어떻게 스케줄링할지를 고민.10.1 멀티프로세서 구조:SMP (대칭 다중처리) 구조 기반. 여러 CPU가 동일한 메모리 접근.10.2 동기화를 잊지마라:여러 코어 간 자원 충돌 방지를 위해 락, 세마포어 등 동기화 필요.10.3 캐시 친화성:스레드가 같은 CPU에서 실행되면 캐시 효율성이 증가. 이를 고려한 배치 필요.10.4 단일 큐 스케줄링:모든 작업을 하나의 큐에서 처리. 공정하나, 큐 병목 가능.10.5 멀티 큐 스케줄링:CPU마다 큐를 따로 둠. 성능 향상 가능, 하지만 부하 불균형 문제 발생 가능.10.6 Linux 멀티 프로세서 스케줄러:CFS (Completely Fair Scheduler) 등 Linux에서 사용..
📘 9장. 비례 배분 (Proportional Share Scheduling) 📘 9장. 비례 배분 (Proportional Share Scheduling)핵심 주제: 자원을 공정하게 비율대로 나누는 방식.9.1 추첨권이 당신의 몫:각각의 작업에 **추첨권(ticket)**을 주고, 랜덤하게 추첨해서 실행할 작업 선택.9.2 추첨 기법:Lottery Scheduling이라고 부름. 확률적으로 비율을 보장.9.3 구현:추첨권을 효율적으로 관리하는 자료구조 필요.9.4 예제:75:25 같은 비율도 손쉽게 구현 가능. 각 작업에 티켓 수만큼 확률 제공.9.5 추첨권 배분 방식:사용량에 따라 동적으로 티켓을 주거나 회수하는 방식도 있음.9.6 왜 결정론 방법을 사용하지 않는가?:확률 기반 방식이 단순하고 유연하며, 공정성을 자연스럽게 보장할 수 있기 때문.9.7 요약:복잡한 상황에서도 ..
📘 8장. MLFQ (Multi-Level Feedback Queue) 📘 8장. MLFQ (Multi-Level Feedback Queue)핵심 주제: 실제 OS에서 사용하는 동적인 스케줄링 기법.8.1 MLFQ 기본 규칙:여러 우선순위 큐를 사용하고, 새 작업은 높은 우선순위에서 시작.8.2 우선순위 변경:시간이 지나면 우선순위를 점점 낮춰가며 CPU 독점 방지.8.3 우선순위 상향 조정:오래 기다린 작업은 우선순위를 올려줌. 기아(starvation) 방지.8.4 더 나은 시간 측정:작업 시간을 예측하는 대신, 행동을 관찰해 반응형 스케줄링 수행.8.5 MLFQ 조정, 다른 쟁점들:큐 개수, 시간 할당량, 리셋 주기 등을 어떻게 조절할지가 성능에 영향.8.6 요약:MLFQ는 현실 세계에서 널리 쓰이는 스케줄링 방법. 유연하고 효율적.
📘 7장. 스케줄링 📘 7장. 스케줄링핵심 주제: 어떤 순서로 CPU를 프로그램에게 할당할지 결정하는 전략들.7.1 워크로드에 대한 가정:어떤 종류의 작업(단기/장기/입출력 중심 등)이 오는지에 따라 스케줄링 전략이 달라짐.7.2 스케줄링 평가 항목:대기 시간, 응답 시간, 처리량, 공정성 등 다양한 기준으로 평가.7.3 선입선출 (FIFO):먼저 온 작업부터 처리. 단순하지만 짧은 작업이 오래 기다릴 수 있음.7.4 최단 작업 우선 (SJF):작업 시간이 짧은 것부터 실행. 평균 대기 시간 최소화, 하지만 예측이 어려움.7.5 최소 잔여시간 우선 (SRTF):현재까지 가장 짧은 남은 시간의 작업을 실행. 선점형 SJF.7.6 새로운 평가 기준: 응답 시간:사용자가 처음 응답을 받는 시간. 특히 인터랙티브 시스템에서 중요..