본문 바로가기

운영 체제15

[운영체제] 7. 교착상태 - (5) 교착상태에 대한 통합적인 전략 📍1. 통합 전략1-1. 통합 전략✔️자원들을 유형에 따라 서로 다른 클래스로 구분하자 ✔️자원 클래스들 간에는 할당 순서를 두어 환형 대기를 막자 ✔️클래스 내부의 자원들 간에는 각 클래스에 적절한 교착상태 해결 방법을 사용하자 1-2. 시스템 자원들의 클래스✔️스왑 공간: 보조기억장치 상의 블록 ✔️프로세스 자원: 파일 같은 할당 가능한 장치 자원 ✔️메인 메모리: 페이지나 세그먼트 등의 단위로 프로세스들에게 할당되는 자원 ✔️내부 자원: 입출력 채널과 같은 자원 1-3. 각 자원 클래스에 적용될 수 있는 전략1️⃣자원 클래스들 간에 할당 순서스왑 공간 ➡️ 프로세스 자원 ➡️ 메인 메모리 ➡️ 내부 자원2️⃣스왑 공간: 점유와 대기 조건을 제거한 예방 방법 사용- 필요한 스왑 공간의 크기를 미리 .. 2025. 5. 1.
[운영체제] 7. 교착상태 - (4) 교착상태 발견 및 복구 📍1. 교착상태 발견 전략요청된 자원들이 할당 가능한 상황이면 항상 프로세스에게 할당함 1-1. 자원 할당이 거절될 때마다 발견 알고리즘 수행✔️교착상태를 빠른 시점에 발견할 수 있음 ✔️발견 알고리즘이 간단함 (단일 환형 대기) ✔️잦은 검사로 오버헤드가 큼 1-2. 주기적 또는 기준에 의해 발견 알고리즘 수행✔️시스템의 처리율 및 처리기 이용률이 저하 ✔️다중 환형 대기와 연관되어 알고리즘이 복잡함 📍2. 교착상태 발견 알고리즘2-1. 필요한 벡터 및 행렬 ✔️자원 벡터(R) : 시스템에 존재하는 자원의 전체 개수 ✔️가용 벡터(V) : 현재 사용 가능한 자원의 개수 ✔️할당 행렬(A) : 프로세스가 할당 받아 점유하고 있는 자원의 개수 ✔️요청 행렬(Q) : 프로세스가 요청한 자원의 개수 2-.. 2025. 5. 1.
[운영체제] 7. 교착상태 - (3) 교착상태 회피 ✔️ 운영체제는 교착상태 발생 3가지 필요조건을 지키도록 강제함 📍1. 교착상태 회피 핵심 아이디어✔️운영체제는 프로세스의 현재 자원 할당 요청을 승인하면, 잠재적인(가능성) 교착상태가 유발될지 또는 아닐지를 동적으로 조사함✔️운영체제는 수행 중인 모든 프로세스의 미래 자원 요청 정보를 미리 알아야 함 📍2. 교착상태 회피를 위한 2가지 접근법1️⃣프로세스 시작 거부(process initiation denial)2️⃣프로세스 자원 할당 거부(process resource allocation denial) 📍3. 프로세스 시작 거부 방법✔️프로세스가 시작하려 할 때 그 프로세스가 수행 중 필요한 모든 자원들에 대해 교착상태 발생의 가능성이 있으면, 프로세스를 시작시키지 않음✔️모든 프로세스들이 .. 2025. 5. 1.
[운영체제] 7. 교착상태 - (2) 교착상태 해결 📍1. 교착상태 해결 방법아래로 갈수록 병행성/병렬성 자원율 ⬆️1️⃣교착상태 예방(prevention) : 가장 좋고 보수적인 방법- 교착상태에 빠지는 4가지 조건 중 하나 이상의 조건이 성립되지 못하도록 시스템 구성2️⃣교착상태 회피(avoidance) - 프로세스 수행 시작 또는 자원 할당 시마다 미래의 교착 상태 가능성을 검사하여 교착 상태가 발생하지 않을 것이라고 확신하는 경우에만 자원 할당3️⃣교착상태 발견 및 복구(detection and recovery) - 교착상태를 발견하는 프로그램을 백그라운드에서 구동, 발견 후 교착상태 해제(해결)4️⃣교착상태 무시 - 교착상태는 없다고 단정, 아무런 대비책 없음 - 사용자나 관리자가 이상을 느끼면 컴퓨터 시스템을 재시작할 것이라고 믿는 방법 ?.. 2025. 5. 1.
[운영체제] 7. 교착상태 - (1) 교착상태 개념 📍1. 교착상태(deadlock)자원을 소유한 2개 이상의 프로세스 사이에서, 각 프로세스는 다른 프로세스가 소유한 자원을 요청하여 무한정 대기하는 상태 📍2. 교착상태 발생 위치✔️사용자가 작성한 응용 프로그램에서 주로 발생 - 정교하지 못한 코딩에서 비롯✔️커널 내에서도 발생- 매우 정교하게 작성되기 때문에 매우 드물게 발생✔️교착상태 발생을 방지하는 컴퓨터 시스템은 거의 없음- 막는데 많은 시간과 공간 비용 때문 📍3. 컴퓨터 시스템에 잠재된 교착상태 유발 요인1️⃣공유 자원은 교착 상태의 발생지✔️교착상태는 다중프로세스가 자원을 동시에 사용하려는 충돌이 요인✔️소프트웨어 자원: 뮤텍스, 스핀락, 세마포, 파일, 데이터베이스, 파일 락✔️하드웨어 자원: 프린터, 메모리, 처리기 등2️⃣자원.. 2025. 5. 1.
[운영체제] 3. 프로세스 관리 - (4) 멀티프로세스 응용 프로그램 !!여기도 .. 📍1. 멀티프로세스 응용 프로그램의 의미1-1. 멀티프로세스(multiprocess) ✔️ 운영체제에서 하나의 응용프로그램에 대해 동시에 여러 개의 프로세스를 수행할 수 있게 하는 기술 ✔️ 독립적으로 수행, 상호 통신 가능 ✔️ 독립적인 메모리 공간에 적재 e.g.) 웹 브라우저의 탭, 새 창 등 ✔️ 다수의 프로세스를 동시에 수행시킴으로서, CPU나 입출력장치 등 자원의 활용률을 높이고 빠른 응답시간을 제공하기 위함   1-2. 다수의 스레드가 동시에 수행되는 상황 1️⃣ Concurrency(동시성, 병행성): multiprogramming, interleaving 1개의 CPU 상에서 2개 이상의 프로세스가 수행되는 상황  2️⃣ Parallelism(병렬성): multiproc.. 2025. 4. 11.
[운영체제] 3. 프로세스 관리 - (3) 프로세스의 계층 구조 !!여기도 마인드맵!!  📍1. 프로세스 정보 보기1-1. Linux 쉘 명령으로 프로세스 정보 보기  1-2. Linux에서 C프로그램으로 PID와 PPID 알아내기e.g.) 시스템 호출 함수 getpid(), getppid()를 이용하여 PID와 PPID를 얻어내는 C프로그램 작성하기#include // printf()를 사용하기 위한 헤더#include // pid_t 타입을 정의하는 헤더#include // getpid(), getppid() 시스템 호출 선언int main(void) { pid_t pid, ppid; // PID를 저장할 변수들 선언 pid = getpid(); // ① 현재 프로세스의 PID 얻기 ppid = getppid(.. 2025. 4. 11.
[운영체제] 3. 프로세스 관리 - (2) 커널의 프로세스 관리 수업> !!!!!!!!!!!!!!!!!!!!!!!마인드맵!!!!!!!!!!!!!!!!!!!!!!!!!!!! 📍1. 프로세스 수행 제어를 위해 필요한 정보1-1. CPU 컨텍스트(context)✔️ 사용 중인 CPU 레지스터들의 내용 1-2. 커널 컨텍스트✔️ 식별자: 부모, 자신, 자식식별자, 프로세스를 생성한 사용자 정보✔️ 프로세스 상태: 준비, 수행, 블록 등✔️ 스케줄링 정보: 우선 순위, 프로세서 사용 시간 등의 정보✔️ 메모리 관리를 위한 정보: 코드와 데이터, 공유되는 메모리 블록들의 주소, 매핑테이블✔️ 입출력 상태 정보: 미해결 입출력 요청, 할당된 입출력 장치, 사용 중인 파일리스트 등의 정보✔️ 프로세스 간의 통신 정보: 다른 프로세스로부터 받은 신호 플래그, 메시지 정보✔️ Acc.. 2025. 4. 11.
[운영체제] 3. 프로세스 관리 - (1) 프로세스 개요 수업> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!마인드맵!!!!!!!!!!!!!!!!!!!!!!!!!!!! 📍1. 프로세스 개요1-1. 프로세스의 의미 ✔️ 다중프로그래밍 운영체제에서 발생하는 에러의 원인들은 프로세스 간    1️⃣ 부적절한 동기화*(improper synchronization)    2️⃣ 상호배제** 실패(failed mutual exclusion)    3️⃣ 비결정적인 프로그램 연산***(nondeterminate program operation)    4️⃣ 교착상태 발생(deadlocks)* 부적절한 동기화: 프로그램 실행이 보류된 상태에서 동기화를 잘못 수행해 신호가 분실되거나 중복되는 것 **상호배제: 동시에 실행되는 프로세스가 공유 자원을 동시에.. 2025. 4. 11.