목록Total (117)
솜은 코튼
2023.05.27 - [OS] - [OS] 교착 상태 (자원 할당 그래프, 식사하는 철학자 문제) [OS] 교착 상태 (자원 할당 그래프, 식사하는 철학자 문제) 교착 상태 . 교착상태는 다른 프로세스의 잡업이 끝나기를 기다리며 작업을 진행하지 못하는 상태이다. 아사현상은 운영체제가 잘못된 정책을 사용하여 지연되는 문제이고, 교착상태는 여러 프 sommda.tistory.com 교착 상태 해결 방법 . 앞에서 교착 상태가 발생할 수 있는 4가지 조건에 대해 설명하였다. 이번엔 복잡한 교착 상태를 해결할 수 있는 방법에 대해 알아보자. 교착 상태를 해결하는 방법은 예방, 회피, 검출과 교착 상태가 발견된 후에 자원을 회복하는 방법이 있다. 해결 방법 특징 교착 상태 예방 교착 상태를 유발하는 네 가지 조..
교착 상태 . 교착상태는 다른 프로세스의 잡업이 끝나기를 기다리며 작업을 진행하지 못하는 상태이다. 아사현상은 운영체제가 잘못된 정책을 사용하여 지연되는 문제이고, 교착상태는 여러 프로세스가 작업하다 보니 자연적으로 발생하는 문제이다. 즉, 중요한 점은 교착 상태와 아사 현상이 다르다는 것이다. 한 프로세스가 두 자원을 다 점유하거나, 반대로 두 자원을 다 기다리는 상태라면 교착 상태가 아니다. 이는 서로 진행을 방해하는 것이 아니라 선후 관계를 만드는 것이고 서로 진행을 방해해야만 교착 상태가 발생한다 할 수 있다. 교착상태는 공유할 수 없는 자원을 사용할 때 발생하고, 자원을 하나씩 가지고 서로가 가진 자원을 기다릴 때 발생한다. 예로 P1은 프린터를 할당받은 후 CD 레코더를 기다리고, P2는 CD..
디스크 스케줄링 . 디스크의 데이터 전송 시간 중에서는 탐색 시간이 가장 느리다. 디스크 스케줄링은 트랙의 이동을 최소화하여 이 탐색 시간을 줄이는 데 목적이 있다. 디스크 스케줄링 기법에 대해 알아보자. 1. FCFS 디스크 스케줄링 . First Come, First Service. 이름 그대로 요청이 들어온 트랙 순서대로 서비스한다. 아래 그림을 보면 요청된 트랙 번호 순서대로 매우 큰 폭으로 움직인다. 2. SSTF 디스크 스케줄링 . Shortest Seek Time First. 현재 헤드가 있는 위치에서 가장 가까운 트랙부터 서비스한다. 만약 두 트랙의 거리가 같다면 먼저 요청받은 트랙을 서비스한다. 효율성은 좋지만 헤드가 중간에 위치하면 가장 안쪽이나 바깥쪽에 있는 트랙을 서비스 받을 확률이..
스케줄링 알고리즘 . 스케줄링 알고리즘은 크게 비선점형 알고리즘과 선점형 알고리즘으로 나뉜다. 명칭 그대로 다른 프로세스가 사용 중인 CPU를 강제로 선점할 수 있냐 없냐인데 우선순위가 높은 프로세스 등의 효율성을 고려해 선점형을 선호한다. 아래 표는 스케줄링 알고리즘의 종류를 분류해 놓은 것이다. 스케줄링 알고리즘의 효율성을 평가할 때 CPU 사용률, 처리량, 대기 시간, 응답시간, 반환시간을 기준으로 하며 사용률과 처리량은 계산하기 어려워 주로 대기 시간, 응답 시간, 반환 시간을 계산한다. 스케줄링 알고리즘의 성능을 비교할 때 주로 평균 대기 시간을 본다. 평균 대기 시간은 모든 프로세스의 대기 시간을 합한 뒤 프로세스의 수로 나눈 값이다. 여기서 알 수 있는 것은 작업 패턴을 바꾸어 평균 대기 시..
계층적 페이징 . 요즘 컴퓨터는 큰 주소 공간을 가진다. (32bit, 64bit) 여기서 문제는 페이지 테이블이 용량이 너무 커진다는 것이다.. 예로 32bit 컴퓨터는 2³² 주소 공간을 가진다. 만약 페이지 크기가 4KB이면 2¹²이고 총 주소 공간을 페이지 크기로 나누면 2³² / 2¹² = 2²⁰ 개 이상의 항목으로 구성된다. 행 하나 당 1 word 이고 32 bit이니깐 각 항목은 4B로 구성된다. ( 1 entry = 1 word = 32 bit = 8bit * 4 = > 4B) 한 행당 4 B.. 그럼 총 2²⁰ 개 이상의 항목으로 구성되니.. 2²⁰ X 4B = 2²² 즉, 각 프로세스는 4MB 용량의 페이지 테이블이 필요한 것이다! 32bit 컴퓨터를 예로 들어 보았지만 만약 64bi..
순수 관계 연산자 . 1. 실렉트 (SELECT, σ) . 실렉트 연산자는 한 릴레이션에서 실렉트 조건을 만족하는 투플들의 부분 집합을 생성한다. 또한 중복되는 행은 제거된다. 실렉트 조건은 비교 연산자 =. , 등의 비교 연산자, AND, OR, NOT 등의 부울 연산자를 포함할 수 있다. 형식은 'σ(릴레이션)'으로 나타낸다. 2. 프로젝트 (PROJECT, π) . 실렉트는 투플을 연산 대상으로 하는 반면, 프로젝트는 애트리뷰트를 연산 대상으로 한다. 또한 실렉트는 중복 투플이 존재할 수 없지만 프로젝트는 중복된 투플이 존재할 수 있다. 형식은 'π(릴레이션)'으로 나타낸다. 3. 조인 (JOIN, ⋈) . 조인 연산자는 두 개의 릴레이션으로부터 연관된 투플들을 결합하는 연산자이다. 조인 연산자는 ..
일반 집합 연산자 . 일반 집합 연산에는 합집합(union), 교집합(INTERSECT), 차집합(difference), 카디션 프로덕트가 있다. 순수 관계 연산들로는 셀렉트(select), 프로젝트(project), 조인(join), 디비전(division)이 있다. 일반 집합 연산자에서 카디션 프로덕트를 제외한 연산자들은 두 릴레이션이 합병 가능하여야 한다. 1. 합집합 (UNION, U) . 합집합은 두 릴레이션 R과 S에서 R 또는 S에 있거나 모두에 속한 튜플들로 이루어진 릴레이션이다. 컬럼의 개수가 같아야 하며, 각 컬럼의 데이터 타입이 같아야 한다. 위에서 추출한 RESULT1과 RESULT2를 합집합하면 아래와 같이 나온다. 여기서 알 수 있는 것은 애트리뷰트 이름은 같지 않아도 된다. 추..
프로세스의 개념 . 먼저 '프로그램'과 '프로세스'의 차이를 알아야 한다. 프로그램은 어떤 데이터를 사용하여 어떤 작업을 할지 절차를 적어놓은 것이고, 프로세스는 프로그램으로 작성된 작업 절차를 실행하는 것이다. 프로그램은 저장장치에 저장되어 있고, 프로세스는 실행을 위해 메모리로 올라온 상태이다. 일괄 작업 시스템의 경우 한 번에 하나의 작업만 처리하므로 프로세스를 생성하고 실행한 후 완료시키면 되지만 우리는 많은 작업을 한 번에 처리해야 한다. 여러 작업을 효율적으로 하기 위해 프로세스 상태 변화에 대해 알아보자. 프로그램을 실행하기 위해 메모리에 올릴 때 작업 관련 정보가 필요하다. 이 정보들은 프로세스 제어 블록(PCB)에 저장된다. PCB는 생성 상태(new)에서 생성된다. 프로세스가 생성되면 ..
Mutex Locks . 임계구역을 보호하기 위해 mutex 락을 사용한다. 즉, 프로세스는 임계구역에 들어가기 전에 반드시 락을 획득해야 하고, 빠져나올 때 락을 반환해야 한다. acquire() 함수가 락을 획득하고, relase() 함수가 락을 반환하며 available 변수가 락의 가용 여부를 표시한다. Mutex 락은 실행 가능 여부를 확인하기 위해 acquire() 함수를 반복적으로 실행해야 하는 바쁜 대기를 해야한다. 이러한 Mutex 락을 '스핀락'이라고도 한다. 스핀락은 사용 여부를 계속 확인하면서 대기하기 때문에 문맥 교환이 필요하지 않다는 장점이 있다. 단, 오래 기다리게 된다면 CPU 주기를 낭비하게 된다. 세마포 (Semaphores) . 앞에 다룬 임계구역 해결 알고리즘은 바쁜 ..
2023.05.22 - [OS] - [OS] 생산자-소비자 문제 [OS] 생산자-소비자 문제 생산자-소비자 문제 . 임계구역과 관련된 전통적인 문제로 생산자-소비자 문제가 있다. 생산자 프로세스와 소비자 프로세스가 독립적으로 작업을 한다. 원형 버퍼를 사용하여 생산자는 버퍼에 sommda.tistory.com 임계구역 해결 방법 . 임계구역 문제를 해결하는 단순한 방법은 Lock을 이용하는 것이다. 앞 내용에서 말한 임계영역 해결하는 3가지 조건에 대해 차례로 알아보자. 1. 상호 배제 문제 . 먼저 잠금이 걸려있나 while문을 통해 확인 후 잠겨있을 경우(true) 무한 루프를 돌며 기다린다. 다른 프로세스가 작업을 완료하여 lock 값을 false로 바꾸면 무한 루프를 빠져나와 임계구역으로 진입한다..