운영체제
-
[운영체제] Virtual Memory강의/운영체제-반효경 2024. 2. 17. 22:58
Demand Paging 요청이 있으면 page를 메모리에 올리는 것 I/O 감소 Memory 사용량 감소 빠른 응답 시간 더 많은 사용자 수용 Valid bit의 사용 Invalid : 사용되지 않은 주소 영역이거나, 페이지가 물리적 메모리에 없는 경우 처음에는 모든 page entry 가 invalid 로 초기화 address translation 시에 invalid bit이 되어 있으면 → Page Fault Page Fault invalid page 접근 시 MMU 가 trap을 발생시킴 순서 비정상적 메모리 요청 감지 → 만약 그러면 abort 빈 페이지 프레임을 가져옴 → 없으면 뺏어옴 해당 페이지를 disk에서 메모리로 읽어옴 페이지 테이블에 해당 페이지 저장 Free Frame이 없는 경우..
-
[운영체제] Memory Management강의/운영체제-반효경 2024. 2. 17. 22:56
Logical vs Physical address 논리 주소 (virtual address) 0번지부터 시작하는 프로세스마다의 독립적인 주소 공간 CPU가 보는 주소 물리 주소 메모리에 실제 올라가는 위치 주소 바인딩 : 주소를 결정하는 것 Symbolic → Logical → Physical 주소 바인딩 컴파일 타임에 컴파일 시점에 이미 물리 주소가 결정되는 것 비효율적 로드 타임에 메모리에 올라갈 때 물리 주소 결정 컴파일러가 재배치 가능 코드 생성 (relocatable code) 컴파일까지는 논리 주소로 매핑되어있음 실행 시작 중간에 (runtime binding) 메모리에 올라갈 때 물리 주소 결정은 동일 실행 도중에 물리 주소가 바뀔 수 있음 MMU 지원이 필요함 MMU (Memory Mana..
-
[운영체제] Deadlock강의/운영체제-반효경 2024. 2. 17. 22:55
Deadlock 교착 상태 (deadlock) 프로세스들이 서로가 가진 자원을 기다리며 block 된 상태 리소스 (자원) 하드웨어, 소프트웨어 등을 포함하는 개념 I/O device, CPU cycle 등 데드락 발생의 4가지 조건 Mutual Exclusion (상호 배제) 매 순간 하나의 프로세스만이 자원 사용 가능 No Preemption (비선점) 자원을 스스로 내놓고 강제로 뺴앗기지 않음 Hold and Wait (보유 대기) 보유 자원을 놓지 않고 계속 가지고 있음 Circular Wait (순환 대기) 자원을 기다리를 프로세스간에 사이클이 형성됨 자원 할당 그래프 (Resource-Allocation Graph) 동그라미 : 프로세스 네모 : 자원 p → R : 프로세스가 해당 자원을 요청..
-
[운영체제] Process Synchronization강의/운영체제-반효경 2024. 2. 17. 22:54
데이터의 접근 데이터를 읽어와 연산 후 결과를 다시 저장함 데이터를 읽기만 하면 문제 없음 근데 쓰면 누가 먼저 쓰냐가 중요해짐 Race Condition 스토리지의 값을 여러 프로세스가 읽어오고 수정 시 문제가 발생 가능 공유 자원을 여러 프로세스가 동시에 읽어오는 상황 Process Synchronization 문제 공유 데이터의 동시 접근 시 데이터 불일치 문제 발생 가능 일관성 유지를 위해서는 실행 순서를 정해줘야함 동기화가 되어야 한다. Critical Section 공유 데이터를 접근하는 코드 하나의 프로세스가 critical section 에 있을 때 다른 프로세스는 들어갈 수 없어야 함 문제를 해결하기 위한 초기 접근 do { entry section critical section exit..
-
[운영체제] CPU Scheduling강의/운영체제-반효경 2024. 2. 17. 22:52
CPU Scheduling CPU Burst CPU를 사용하는 단계 I/O Burst I/O 작업하는 단계 CPU bound job : CPU를 많이 사용하는 작업 I/O bound job : I/O를 많이 사용하는 작업 CPU 스케줄링이 필요한 이유 I/O 가 CPU 사이에 자주 끼기 때문 CPU Scheduler와 디스패처 스케줄러 : ready 상태 프로세스 중 CPU를 줄 프로세스를 고름 디스패처 : CPU 의 제어권을 스케줄러로부터 선택된 프로세스에게 넘김 이 과정을 context switch라고 함 CPU 스케줄링 언제 필요? Running → Blocked (I/O) Running → Ready (할당 시간 만료 timer interrupt) Blocked → Ready (I/O 완료 후 인..
-
[운영체제] Process Management강의/운영체제-반효경 2024. 2. 17. 22:51
프로세스 생성 부모 프로세스가 자식 프로세스 생성 → 복제 트리 구조 형성 자원 운영체제로부터 받는다 부모와 공유한다 원칙적으로 공유하지는 않음 주소 공간 자식은 부모의 공간을 복사 자식은 그 공간에 새 프로그램을 올림 fork() → exec() fork()로 복제 후 exec()으로 새로운 프로그램을 메모리에 올림 프로세스 종료 exit 시스템 콜로 수행 자식이 부모에게 output 데이터를 보냄 (wait)→ 자식이 먼저 종료됨 abort 부모 프로세스가 자식의 수행을 종료시킴 자식이 할당 자원의 한계치를 넘어섬 부모가 종료되는 경우 운영체제가 부모 프로세스 종류 시 자식이 더 이상 수행되지 않도록 막음 프로세스 간 협력 독립적 프로세스 원칙적으로 하나의 프로세스는 다른 프로세스 수행에 영향 못 끼..
-
[운영체제] Process강의/운영체제-반효경 2024. 2. 17. 22:50
Process 실행 중인 프로그램 Context (문맥) : 특정 시점에서 어디까지 수행을 했는가 → PC가 어디를, stack, data, code에 어디까지 실행했는가, Register에는 어떤 값이 저장되어 있었는가 CPU 수행 상태를 나타내는 하드웨어 문맥 Register, PC 프로세스의 주소 공간 code, data, stack 프로세스 관련 커널 자료 구조 PCB Kernel stack : 여러 프로세스가 공유 → 프로세스마다 스택을 별도로 둠 프로세스의 상태(state) Running : CPU를 잡고 instruction 수행중 Ready : CPU를 기다리는 상태 (메모리에 올라와있어야함) Blocked (wait, sleep) CPU를 주어도 당장 instruction을 수행할 수 없..