분류 전체보기30 [운영체제] 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. [운영체제] 4. 스레드 관리 - (5) 멀티스레딩에 관한 이슈 📍1. 스레드 ✔️ 하나의 프로세스 내에 있는 수행 흐름임 📍2. 멀티스레드 응용 프로그램✔️ 하나의 프로세스 안에 여러 개의 스레드가 있는 것을 말함웹서버는 대표적인 멀티 스레드 응용프로그램임 ✔️ 사용자가 서버 DB에 자료를 요청하는 동안 서버의 다른 기능을 이용할 수 있음 ✔️ 멀티 스레드 웹브라우저단일 탭 또는 창 내에서 브라우저 이벤트 루프, 네트워크 처리, I/O 및 기타 작업을 관리하고 처리함 📍3. 멀티 스레드 응용프로그램의 장점 1️⃣ 스레드는 프로세스보다 가벼움 ✔️ 스레드는 스택 영역을 제외한 나머지 영역을 서로 공유하기 때문에 기본적으로 내장되어 있는 데이터 용량이 프로세스보다 작음 ✔️ 스레드는 프로세스 내에서 생성되기 때문 에스 레드의 수행환경을 설정하는 작.. 2025. 4. 17. [운영체제] 4. 스레드 관리 - (4) 멀티코어와 멀티스레딩 ✔️ 멀티 코어 구조의 성능 향상은 SW가 병렬 자원을 효율적으로 이용할 수 있는 능력에 영향을 받음 ✔️ SW 병렬 화방법1️⃣ 태스크 병렬화 2️⃣ 데이터 병렬화 📍1. 태스크 병렬화1-1. 응용 SW는 기능의 집합 ✔️ 순차적 기능(태스크) 수행 ✔️ 병렬적 기능(태스크) 수행 1-2. 암달의 법칙(Amdahl’s Law)✔️ 응용프로그램의 코드 일부가 병렬화될 때 전체 응용프로그램에서 어느 정도의 속도 향상이 기대될 수 있는지를 나타냄 ☑️ 단일 코어상에서 응용프로그램을 수행한 시간/ N 개의 코어상에서 응용프로그램을 수행한 시간 e.g.) SW 태스크 병렬화의 속도 향상 예 ✔️ 코어 수가 6개인 PC에서 작업 ✔️ 코어 하나에서 영상처리프로그램이 애니메이션 한 장면을 처리하는 데 .. 2025. 4. 17. [운영체제] 4. 스레드 관리 - (3) 스레드 구현 유형 📍0. TCB를 생성하고 관리하는 주체에 따라 1️⃣ 커널 레벨 스레드(kernel-level thead, KLT) 2️⃣ 사용자 레벨 스레드(user-level thread, ULT) 📍1. 커널레벨 스레드(KLT)✔️ 스레드에 대한 정보(TCB)는 커널 공간에 생성되며 커널에 의해 소유됨 ✔️ 응용프로그램이 시스템호출을 통해 커널 레벨 스레드 생성 ✔️ 커널이 만들고, 커널에 의해 관리(스케줄링 등) ✔️ 스레드 코드와 데이터: 사용자 공간에 존재 ✔️ main 스레드는 커널 스레드 ✔️ 응용프로그램을 적재하고 프로세스를 생성할 때 커널은 자동으로 main 스레드 생성 ✔️ main 스레드의 TCB는 커널에 생성 ✔️ Windows, Linux, iOS, macOS 등 📍2. 사용자 레.. 2025. 4. 17. [운영체제] 4. 스레드 관리 - (2) 스레드 주소 공간과 컨텍스트 📍1. 스레드 주소 공간1-1. 스레드 주소 공간 - 스레드가 수행 중에 사용하는 메모리 공간 ✔️ 스레드 사적 공간 - 스레드 스택 - 스레드 로컬 스토리지(TLS, Thread local storage)✔️ 스레드 사이의 공유 공간 - 프로세스의 코드(스레드 코드 포함) - 프로세스의 전역변수 공간 - 프로세스의 힙 영역 e.g.) 프로세스 주소 공간에 형성된 3개 스레드의 주소 공간 사례 e.g.) 스레드의 주소 공간 확인 C프로그램 ✔️ makethreadwithTLS.c가 수행되는 동안 스레드 주소 공간이 변하는 과정 📍2. 스레드 상태와 스레드 운용2-1. 스레드 상태✔️ 스레드는 준비, 수행, 블록, 수행, 종료의 여러 상태를 거치면서 수행 ✔️ 스레드 상태는 TCB에 저장 .. 2025. 4. 17. 이전 1 2 3 4 다음