본문 바로가기

운영체제8

교착상태2 교착 상태교착 상태 회피교착 상태 성립 조건(4가지 조건)중 한 가지는 성립되지 않도록 하는 방법은 장치의 이용률을 저하시키고 시스템의 총처리율을 감소시킨다. 교착 상태를 회피하는 다른 대안자원이 어떻게 요청될지에 대한 추가 정보를 제공하도록 요구한다.가용 자원, 각 스레드에 할당된 자원, 각 스레드가 요청하거나 방출할 자원의 정보 등자원 R1, R2를 가진 시스템에서스레드 P는 R1을 먼저 요청하고 R2를 요청스레드 Q는 R2를 먼저 요청하고 R1을 요청각 스레드의 요청과 방출에 대한 완전한 순서를 파악하고 있다면 교착 상태를 피하고자 스레드가 대기해야 하는지 여부를 결정할 수 있다.안전 상태안전 상태(Safe State)각 스레드들이 요청하는 모든 자원(최대 요구 수를 요구하더라도) 교착 상태를 발생.. 2024. 12. 25.
교착 상태1 교착 상태교착 상태(deadlock)스레드가 자원을 요청했을 때, 그 자원이 그 순간 이용할 수 없다면 스레드는 대기 상태에 들어간다. 때때로 대기 중인 스레드가 다시는 상태를 변경하지 못하는 경우가 발생하는데, 이는 해당 스레드가 요청한 자원이 다른 대기 중인 스레드에 의해 점유되어 있을 때 발생한다. 이러한 상황을 교착상태(deadlock)라고 한다.시스템 모델시스템은 여러 경쟁 스레드간에 분산 될 한정된 수의 자원으로 구성된다.자원은 여러 유형(또는 클래스)으로 분할될 수 있으며, 각각은 몇 개의 동일한 인스턴스로 구성된다.CPU 사이클, 파일 및 IO 장치 등시스템에 4개의 CPU가 있는 경우 자원 유형 CPU에는 4개의 인스턴스가 존재한다.스레드는 자원을 사용하기 전에 자원를 요청해야하며 자원을.. 2024. 12. 16.
동기화 예제 동기화 예제고전적인 동기화 문제들동기화 방법들을 검증하는데 사용되는 동기화 문제들유한 버퍼 문제동기화 기본요소(뮤텍스, 세마포어 등)들의 능력을 설명하기 위하여 사용되는 문제다. 생산자 소비자는 다음과 같은 자료 구조를 공유한다.int n;semaphore mutex = 1;semaphore empty = n;semaphore full = 0;n개의 버퍼로 구성된 풀이 있으며, 각 버퍼는 한 아이템을 저장할 수 있다.mutex 이진 세마포어는 버퍼 풀에 접근하기 위한 상호 배제 기능을 제공하며 1로 초기화 된다.while(true) { /* 버퍼에 넣을 아이템 생성 */ ... wait(empty); wait(mut.. 2024. 12. 2.
동기화 도구들 동기화 도구들배경생산자 소비자 문제// 생산자while (true) { while (count == BUFFER_SIZE); buffer[in] = next_produced; in = (in + 1) % BUFFER_SIZE; count++;}// 소비자while (true) { while (count == 0); next_consumed = buffer[out]; out = (out + 1) % BUFFER_SIZE; count--;}생산자와 소비자 코드를 병행적으로 수행시키면 올바르게 동작하지 않는다. count 값이 5이고, 생산자 소비자가 count++, count--를 병행적으로 실행할 때 count의 값은 4,5,6이 될 수 있다. (올바른 값은 5).. 2024. 11. 9.
CPU 스케줄링 CPU 스케줄링기본 개념다중 프로그래밍의 목적은 CPU 이용률을 최대화하기 위해 항상 실행 중인 프로세스를 가지게 하는 데 있다. 다중 프로그래밍에서는 다수의 프로세스를 메모리에 유지하고, 어떤 프로세스가 대기해야 할 경우, 운영체제는 CPU를 그 프로세스로부터 다른 프로세스에 할당한다. 이러한 패턴은 계속된다. 이러한 종류의 스케줄링은 운영체제의 기본적인 기능이다.CPU-I/O 버스트 사이클프로세스들은 CPU 실행과 I/O 대기의 사이클을 반복한다.CPU 스케줄러CPU가 유휴 상태가 될 때마다, 운영체제는 준비 큐에 있는 프로스세 중에서 하나를 선택해 실행해야 한다. 선택 절차는 CPU 스케줄러에 의해 수행된다. 스케줄러는 실행 준비가 되어 있는 메모리 내의 프로세스 중에서 선택하여, 이들 중 하나에게.. 2024. 10. 24.
스레드와 병행성 스레드와 병행성개요스레드는 CPU의 기본 단위이다.스레드는 스레드 ID, 프로그램 카운터(PC), 레지스터 집합, 스택으로 구성된다.스레드는 같은 프로스세스에 속한 다른 스레드와 코드 섹션, 데이터 섹션, 운영체제 자원을 공유한다.동기현대의 컴퓨터와 모바일 기기에서 실행되는 대부분의 소프트웨어 어플리케이션들은 멀티스레드를 이용한다. 어플리케이션은 일반적으로 여러 스레드의 제어와 함께 별도의 프로세스로 구현된다. 스레드의 예시 웹 브라우저는 하나의 스레드가 이미지 또는 텍스트를 표시하고 다른 스레드는 네트워크에서 데이터를 검색하도록 할 수 있다. 웹 서버가 수천명의 클라이언트로부터 자원에 대한 요청을 받을 수 있다. 만약 웹 서버가 단일 스레드 프로세스로 동작한다면 한 번에 하나의 클라이언트만 자원을 응답.. 2024. 10. 4.