3과목 운영체제
프로세스 : 실기억장치에 저장된 프로그램
PCB(프로세스 제어 블록)
: 프로세스 현재 상태 / 자원에 대한 포인터 / 계정 정보 / 주기억장치 관리 정보? / 입출력 상태 정보 / 프로세스 고유식별자
CPU 레지스터 정보(AC, Index R, PC 등)
프로세스 상태 및 상태 전이
2. 프로세스 상태전이
(1) 보류상태 : 작업이 일시중지되거나 디스크에 수록된 상태
(2) 준비상태 : CPU를 할당받을 수 있는 상태
(3) 실행상태 : CPU를 차지한 상태
(4) 대기상태 : I/O 인터럽트 발생시 CPU를 양도하고 완료까지 대기
(5) 교착상태 : 프로세스가 결코 일어날 수 없는 사건의 발생을 기다리는 상태
(6) 완료상태 : 프로세스 종료
dispatch >>
상태 : submit/ hold / ready / run / wait / terminated, Exit
<<Spooling?
디스패치 : 우선순위가 가장 높은 작업이 수행될 수 있도록 시스템 자원을 할당하는 것]
2. 프로세스 전이상태(Process State Transition)
- Dispatch(Ready -> running)
- Timer Runout(Running -> Ready)
- Wake Up(Waiting -> Ready)
스레드 : 경량 프로세스라고도 함
스케줄링(=디스패처) :
각 프로세스에 주어진 우선 순위에 따라 어떤 순번으로 어떤 프로세스를 얼마만큼 작동시킬 것인가를 OS에서 제어하는 방법
프로세스 실행될 때 필요한 자원 프로세스에 할당
스케줄링 목적
: 공정성, 처리율 증가, CPU 이용률 증가, (프로세스)우선순위 제도, *오버헤드, 반환시간, 응단시간, 대기시간 최소화
무한 연기 회피
*오버헤드 : OS(오퍼레이팅 시스템)가 시스템을 관리하는데 필요로 하는 CPU 타임이나 메모리용량
OS의 설계에 있어서 오버헤드를 최소화하는 것이 중요
시분할 시스템 : 사용자 각 개인의 프로그램이 운영체제의 제어하에 온라인으로 수행된다 (라운드로빈 방식)
선점 스케줄링 - 라운드 로빈
하나의 중앙처리장치를 임의의 프로세스가 종료될 때까지 차지하는 것이 아니라, 여러 프로세스들이 중앙처리장치를 조금씩 돌아가며 할당받아 실행되는 방식으로, 리눅스를 포함한 대부분의 시스템에서 사용하는 방식이다.
시분할(Time Sharing) 시스템을 위해 고안
큐 FCFS(first come first served / FIFO)를 선점 형태로 변형
할당된 시간이 클 경우 FIFO과 같아지고 할당된 시간이 작을 경우 문맥교환 및 오버헤드가 자주 발생
비선점 스케줄링
작업이 프로세스로 생성되어 CPU를 할당받으면 프로세스가 종료되거나 입출력 조작을 위해 자발적으로 중지될 때까지 계속 실행되도록 보장하는 스케줄링 정책
선점 스케줄링은 프로세스 간의 오버헤드(overhead)가 적어 효율적이나, 대화식 시분할 시스템에는 적합하지 않고, 긴 작업이 짧은 작업을 오랫동안 기다리게 되는 경우가 발생되는 단점
: FIFO
: SJF, Shortest Job First Scheduling
실행시간이 가장 짧은 프로세스에 CPU 할당
: HRN ( Highest Response ratio Next )
SJF(shortest-job-first)의 단점을 개선한 기법으로, 각 작업의 우선 순위가 최상 응답 비율 순서
우선순위 = (대기시간 + 서비스 시간 ) / 서비스 시간 //값이 클수록 우선순위가 높다
>> 대기시간이 길면 우선적으로 처리해주는 스케줄링 방법
상호 배제 (Mutual Exclusion)
특정 프로세스가 공유자원 사용할때 다른 프로세스가 공유자원을 이용하지 못하도록 제어하는 기법
번갈아가며 공유자원 사용하도록하는 임계구역 유지 기법
임계구역 내에서는 인터럽트, 교착상태, 무한반복이 발생되지 않도록 주의
세마포어
철도의 까치발 신호기 또는 해군의 수기 신호라는 뜻으로, 복수의 작업을 동시에 병행하여 수행하는 운영 체제(또는 프로그래밍)에서 공유 자원에 대한 접속을 제어하기 위하여 사용되는 신호.
임계구역 내에서 다른프로세스에 영향을 끼치는것을 피하기위해 세마포어 (semaphore: 신호기) 이용하고
각 프로세스같의 동기를 취함
프로세스가 사용하고 있는 동안에 세마포어를 세워서 다른 프로세스를 대기시키고 사용이 끝나면 해제시키는 방법으로 사용
E.J.Dijkstra가 제안.
공유자원의 개수를 나타냄
세마포어 S는 정수값을 가지는 변수이며, 다음과 같이 P와 V라는 명령에 의해서만 접근할 수 있다. (P와 V는 각각 try와 increment를 뜻하는 네덜란드어 Proberen과 Verhogen의 머릿글자를 딴 것이다.)
P는 임계 구역에 들어가기 전에 수행되고, V는 임계 구역에서 나올 때 수행된다. 이때 변수 값을 수정하는 연산은 모두 원자성을 만족해야 한다. 다시 말해, 한 프로세스(또는 스레드)에서 세마포어 값을 변경하는 동안 다른 프로세스가 동시에 이 값을 변경해서는 안 된다.
교착상태(deadlock) 발생의 필요충분 조건
교착상태 : 둘 이상의 프로세스가 서로 남이 가진 자원을 요구하면서 양쪽 모두 작업 수행을 할 수 없이 대기 상태로 놓이는 상태
조건 : 상호 배제, 점유와 대기(hold and wait), 비선점, 환형대기 (Circular Wait)
*원형대기 : 여러 프로세스들이 서로 다른 프로세서들이 갖고 있는 자원을 기다리는 것.
점유와 대기 (Hold and Wait)
: 최소한 하나의 자원을 점유하고있으면서
다른 프로세스에 할당되어 사용되고있는 자원을 추가로 점유하기위해 대기하는 프로세스가 있어야함
교착상태 해결
교착상태 해결 - 예방 기법
교착상태 발생 필요충분조건 중 하나를 제거(부정)
자원의 낭비가 가장 심하다
교착상태 해결 - 회피 기법
교착상태를 적절히 피해나가는 방법
은행원 알고리즘
: 프로세스가 요구한 자원의 수가 현재 사용 가능한 자원의 수보다 작을 때 프로세스가 요구한 수만큼 더 자원을 할당하는 방식
모니터?
동기화 구현을 위한 특수 프로그램 기법
특정 공유자원을 프로세스에 할당하는데에 필요한 데이터와 이 데이터를 처리하는 프로시저로 구성
자료 추상화, 정보 은폐 개념을 기초로 하며 공유자원 할당을 위한 병행성 구조
모니터 내의 공유 자원을 사용하려면 프로세스는 반드시 모니터의 진입부를 호출해야함
외부의 프로시저는 직접 액세스할 수 없으며 모니터의 경계에서 상호 배제가 시행됨
한순간에 하나의 프로세스만 진입하여 자원 사용 가능
기억장치 관리 전략
반입 (Fetch) 전략, 배치(Placement) 전략, 교체 전략
배치전략 : 가상 기억 장치의 관리 기법이며, 주기억 장치에 적재해야 할 페이지나 세그먼트를 주기억 장치의 어느 곳에 적재시킬 것인가를 정하는 것. 또는 기억 장치의 관리 전략으로서 새로 반입되는 프로그램을 주기억 장치의 어느 곳에 위치시킬 것인가를 결정하는 기법이며, 이 전략
에는 최초 적합(first-fit), 최적 적합(best-fit) 및 최악 적합(worst-fit) 기억 장치 배치 전략 등이 있다.
최초 적합 : 첫번째 분할영역에 배치
최적 적합 : 단편화 가장 작은 분할영역에 배치
최악 적합 : 단편화 가장 크게 남지는 분할 영역에 배치
*단편화 : 주기억 장치의 활용도를 극대화하기 위해 프로그램을 비연속적인 곳에 적재하는 작업.
내부 단편화 : 분할된 영역이 할당될 프로그램의 크기보다 크기때문에 프로그앰이 할당된 후 사용되지 않고 남아있는 빈 공간
(다 할당하고 남은 공간)
외부 단편화 : 분할된 영역이 작아 프로그램이 할당될 수 없어 사용되지 않고 빈공간으로 남아있는 분할된 전체 영역
가상기억장치에 저장된 프로그램을 실행하려면 가상기억장치 주소를 주기억장치 주소로 바꾸는 주소매핑 필요
가상 기억장치 구현 기법 - 페이징(Paging)
가상기억장치에 보관되어 있는 프로그램과 주기억 장치의 영역을 동일한 크기로 나눈 후
나눠진 프로그램(페이지)을 동일하게 나눠진 주기억장치의 영역(페이지 프레임)에 적재시켜 실행하는 기법
가상기억장치 구현 기법 - 세그멘테이션(Segmentation)
프로그램을 다양한 크기의 논리적인 단위로 나눈 후 주기억장치에 적재시켜 실행
프로그램을 배열이나 함수 등과 같은 논리적인 크기로 나눈 단위
각 세그먼트는 고유한 이름과 크기를 갖고있다.
다른 세크먼트에게 할당된 영역으로의 침범을 막기위해 기억장치 보호키 (storage protection key) 필요
내부 단편화는 발생하지 않으나 외부 단편화는 발생할 수 있다.
: 동일하게 나눠진영역에 적재하기때문에 내부단편화는 X , 분할된 영역이 세그먼트보다 작으면 외부 단편화 발생
페이지 교체 알고리즘
페이징 기법으로 메모리를 관리하는 운영체제에서, 페이지 부재가 발생 하여 새로운 페이지를 할당하기 위해 현재 할당된 페이지 중 어느 것과 교체할지를 결정하는 방법이다. 이 알고리즘이 사용되는 시기는 페이지 부재가 발생해 새로운 페이지를 적재 해야하나 페이지를 적재할 공간이 없어 이미 적재되어 있는 페이지 중 교체할 페이지를 정할 때 사용된다. 빈 페이지가 없는 상황에서 메모리에 적재된 페이지와 적재할 페이지를 교체함으로 페이지 부재 문제를 해결
페이지 교체 알고리즘 - LRU
LRU(Least Recently Used, 최소 사용 빈도) 기법은 최근에 가장 오랫동안 사용하지 않은 페이지를 교체하는 기법
각 페이지마다 계수기나 스택을 두어 현 시점에서 가장 오랫동안 사용하지 않은 페이지를 교체한다.
페이지 교체 알고리즘 - FIFO (선입선출 페이지교체)
각 페이지가 주기억 장치에 적재될 때마다 그때의 시간을 기억시키고,
한 페이지가 교체될 때는 주 기억 장치 내에 가장 오래 있었던 페이지를 교체시키는 것.
페이지 교체 알고리즘 - NUR (Not used Recently)
최근에 사용하지 않은 페이지 교체, 참조비트와 변형비트를 사용하여 교체순서 결정
가상기억장치 - 페이지 크기
페이지 크기가 작을 경우
: 페이지 단편화 감소, 페이지 이동시간 줄어듦, Locality(국부성)에 더 일치, 기억장치 효율 높아짐
페이지 정보를 갖는 페이지 맵 테이블의 크기가 커지고 매핑 속도가 늦어짐
디스크 접근 횟수가 많기때문에 전체적인 입출력 시간은 늘어남
페이지 크기가 클 경우
: 페이지 맵 테이블 크기가 작아지고 *매핑속도가 빨라짐
전체적인 입출력 효율 증가
매핑 : 가상기억장치 주소를 주기억장치 주소로 바꾸는 주소매핑
시간 구역성 (Temporal Locality, 잠정 구역성)
프로세스가 실행되면서 하나의 페이지를 일정 시간동안 집중적으로 엑세스하는 현상
한번 참조한 페이지는 가까운 시간 내에 계속 참조할 가능성이 높음을 의미
시간 구역성이 이루어지는 기억장소 : loop / Stack / sub routine / Counting / Totaling 에 사용되는 변수들?
워킹 셋 (Working Set)
프로세스가 일정 시간동안 자주 참조하는 페이지들의 집합
시간이 지남에 따라 집합은 변화
스래싱 (Thrashing)
프로세스 처리시간보다 페이지 교체 시간이 더 많아지는 현상
자주 페이지 부재 발생함으로 인해 나타나는 현상, 시스템 성능 저하
CPU 이용률 높이고 스래싱 방지하는 방법
- 다중 프로그래밍의 정도를 적정 수준으로 유지한다.
- 페이지 부재율 조정 <<??
- Working Set 유지 << 자주 사용하는 프로세스 집합 유지
- 프로세스가 필요로하는 만큼의 페이지 프레인 제공
- 부족 자원 증설
- 일부 프로세스 종료
디스크 스케줄링 - SSFT ??
탐색거리가 가장 짧은 트랙에 대한 요청을 먼저 서비스
현재 헤드 위치에서 가장 가까운 거리에 있는 트랙으로 헤드를 이동시킨다
탐색 패턴이 편중돼잇어 안쪽이나 바깥쪽 트랙이 서비스를 덜받는 경향
파일 시스템의 기능
사용자와 보조기억 장치 사이에서 인터페이스를 제공
사용자가 파일을 생성, 수정, 제거할 수 있도록한다.
적절한 제어 방식을 통해 타인의 파일을 공동으로 사용할 수 있도록 한다.
파일 디스크립터
파일을 관리하기 위해 OS가 필요로하는 파일에 대한 정보를 갖고있는 제어블록 (FCB, File Control Block)
보통 파일디스크립터는 보조기억 장치 내에 저장되어있다가 해당파일이 Open 될때 주기억 장치로 옮겨진다.
파일마다 독립적으로 존재, 시스템따라 다른구조 가질 수 있다.
파일 시스템이 관리하므로 사용자가 직접 참조할 수 없다.
파일 디렉터리
:컴퓨터 시스템이 관리하고 있는 파일의 일람표. 파일의 이름과 기록 위치, 크기 등이 기록되어 있다.
운영 체제(OS)에 의하여 관리된다.
시스템에서 구하는 파일이 어느 주변 장치의 어느 장소에 존재하는 가를 알기 위해서 설치된 파일 목록이다.
2단계 디렉터리
중앙에 마스터 파일 디렉터리 (MFD)가 잇고 그 아래에 사용자별로 서로 다른 파일 디렉터리가(UFD) 있는 2계층 구조
MFD는 UFD를 관리하고 UFD는 사용자별 파일을 관리한다.
트리 디렉터리
하나의 루트 디렉터리와 여러 개의 종속(서브) 디렉터리로 구성
DOS, Windows, UNIX등의 운영체제에서 사용되는 디렉터리 구조
디렉터리의 생성과 파괴가 용이
포인터를 사용하여 디렉터리 탐색, 경로명은 절대경로명 / 상대 경로명
비순환 그래프 디렉터리 (acyclic graph directory strurture)
하위 파일이나 하위 디렉터리를 공동으로 사용할 수 있는 것으로, 사이클(순환)이 허용되지 않는 구조
하나의 파일이나 디렉터리가 여럭 개의 경로 이름을 가질 수 있다.
공유된 파일을 삭제할 경우 허상 포인터 (Dangling Pointer) 발생할 수 있음
자원 보호 기법
종류 : 접근 제어 행렬 / 전역 테이블 / 접근 제어 리스트 / 권한 리스트
접근 제어 행렬 (Access Control Matrix) : 자원 보호의 일반적인 모델로, 객체에 대한 접근을 행렬로써 표시
권한(자격) 리스트 : 접근 제어 행렬에 있는 각 행, 즉 영역을 중심으로 구성한 것으로서
각 사용자들에 대한 자격들로 구성되며, 자격은 객체와 그 객체에 허용된 연산 리스트임
보안의 요건
기밀성(Confidentiality, 비밀성) : 인가된 사용자만 접근가능, 노출되돼도 읽을 수 없음
무결성(Integrity) : 인가된 사용자만 수정 가능
가용성(Availability) : 인가받은 사용자는 언제라도 사용가능
인증 (Authentication) : 사용자가 합법적인 사용자인지 확인하는 모든 행위
부인 방지 (NonRepudiation) : 부인 못하도록 데이터 송수신 증거 제공
보안 유지 기법 - 사용자 인터페이스 보안 : OS가 사용자의 신원 확인 후 권한 주는 보안 기법
암호화 기법
- 비밀키 시스템 (Private Key System, 개인키 시스템)
: 동일한 키로 데이터를 암호화하고 복호화하는 대칭 암호화기법
비밀키 시스템은 암호화 복호화가 빠르고, 알고리즘이 단순하고, 파일 크기가 작다
DES(Data Encryption Standard) //데이터 암호화 표준
- 공용키 (Public Ket System)
: 서로 다른 키로 암호화, 해독 >> 비대칭 암호화 기법
키의 분배 용이, 관리해야할 키 개수 적다.
RSA (Rivest Shamir Adleman) // 사람 세 명 이름 합친거
다중 처리기
여러 대의 중앙 처리 장치(CPU)가 공통의 주기억 장치(main storage)에 액세스하는 구성의 처리 장치를 가리킨다(이것을 제어하는 operating system(OS)의 하나)
하나의 시스템에 여러 개의 처리기 (프로세서)를 두어 하나의 작업을 각 처리기에게 할당하여 수행하도록 하는 것
하나의 복합적인 OS에 의하여 전체 시스템이 제어된다.
프로세서들 간의 통신은 공유 기억장치를 통해서 이루어진다.
기억 장치와 입출력 채널, 주변 장치들을 공유한다.
다중처리기 시스템의 목표 : 수행속도, 신뢰성, 유연성, 공유성 등
메모리 충돌 문제, 캐시 일관성 문제, 메모리 접근의 효율성 등 고려해야
하이퍼 큐브
다수의 프로세서들을 연결하는 방식으로 비교적 경제적인 방식
하나의 프로세서에 연결되는 다른 프로세서의 수(연결점)가 n개일 경우 프로세서는 총 2^n개 필요
10∼1,000대의 처리기를 병렬로 동작시키는 컴퓨터 구조. 소결합 다중 처리기라고도 한다. 처리기는 각각의 기억 장치를 가지고 있으며, 통신 채널에 의해 처리기를 모두 연결하고 있다. 예를 들면, 3차원 하이퍼큐브는 8개의 처리기를 가지고 있는데 각각 3회선의 통신 채널을 가지고 있다. 즉, 정육면체의 각 정점에 처리기가 있고, 변(邊)이 통신 회선으로 되어 있다고 할 수 있다.
[네이버 지식백과] 하이퍼큐브 [Hypercube] (IT용어사전, 한국정보통신기술협회)
강결합 시스템 (Tightly Coupled System, 다중 처리 시스템)
동일 운영체제 하에서 여러 개의 프로세서가 하나의 메모리를 공유하여 사용하는 시스템
하나의 OS가 모든 프로세서, 시스템 하드웨어 제어
프로세서 간의 통신은 공유메모리를 통해서 이루어진다.
하나의 메모리를 사용하므로 CPU간 결합력이 강하다
공유 메모리를 차지하려는 프로세서 간의 경쟁을 최소화해야한다.
주/종 처리기
하나의 주처리기에 의해서 모든 자원 관리와 운영 체제 기능이 수행되므로
사용자의 작업을 처리하는 종속 관계에 놓여 있는 처리기의 활동은 통제된다.
하나의 프로세서를 Master(주프로세서)로 지정하고
나머지는 Slave(종프로세서)로 지정하는 비대칭 구조
주프로세서 다운되면 전체 시스템 다운
주프로세서 : 입출력과 연산담당, 운영체제 수행
종프로세서 : 연산만 담당
완전 연결형 분산처리시스템 (Fully Connection)
각 사이트들이 시스템 내의 다른 모든 사이트들과 직접 연결된 구조
하나의 링크가 고장나도 다른 링크를 이용하면됨
사이트의 수가 n개 이면 링크 수는 n(n-1) / 2 // n개 사이트에서 연결될 2개 사이트의 경우의 수를 구하는 식
분산 처리 시스템의 목적
자원공유 / 연산 속도 / 신뢰도 향상 / 컴퓨터 통신 ??
면 여러 처리기들이 동시에 여러 작업을 수행함으로써 성능이 향상될 수 있고, 데이터도 복사본을 여러 곳에 여분으로 유지함으로써 신뢰도를 올릴 수 있으며, 네트워크에 새로운 처리기 등을 첨가함으로써 쉽게 시스템의 확장을 꾀할 수 있다는 등의 장점이 있다
[네이버 지식백과] 분산처리시스템 [distributed processing system] (두산백과)
장점 : 통신 용이, 장치 공유, 데이터 공유, 중앙컴퓨터 과부하 줄임,
컴퓨터 위치 몰라도 자원 사용 가능, 시스템의 점진적 확장 가능
단점 : 중앙 집중형 시스템에 비해 SW개발이 어려움 , 보안문제 발생, 설계 복잡
UNIX의 특징
시분할 시스템을 위해 설계된 대화식 운영체제 오픈소스 오픈시스템
대부분 C언어로 작성돼있어 이식성이 높으며 장치, 프로세스 간의 호환성이 높다.
크기가 작고 이해하기 쉬우며 다중사용자 다중작업을 지원한다 (Multi-User, Multi-Tasking)
통신망 관리용 OS로 적합
트리 구조의 파일 시스템, 전문적인 프로그랜 개발에 용이
백그라운드에서 작업을 수행할 수 있으므로 여러개의 작업을 병행처리할 수 있다.
다양한 유틸리티 프로그램 존재
유틸리티 프로그램 : 프로그램 작성에 도움이 되는 유용한 소프트웨어나 컴퓨터 운영에 도움이 되는 소프트웨어. 다른 응용 소프트웨어
UNIX 시스템 - 커널 (Kernel)
UNIX의 가장 핵심적인 부분
하드웨어를 보호 (캡슐화)하고 프로그램들과 하드웨어간의 인터페이스 역할 담당
기능 : 프로세스 관리, 기억장치 관리, 파일 관리, 입출려 관리, 프로세스 간 통신, 데이터 전송 및 변환 등
캡슐화 : 객체의 자료와 행위를 하나로 묶고, 실제 구현 내용을 외부에 감추는 것. 캡슐화된 객체의 행위는 외부에서 볼 때는 실제가 아닌 추상적인 것이 되므로 정보 은닉(information hiding) 개념이 지켜진다
UNIX 시스템 - 쉘 (Shell)
사용자의 명령어를 인식하여 프로그램을 호출하고 명령을 수행하는 명령 해석기
시스템과 사용자 간의 인터페이스 담당
DOS의 COMAND.COM과 같은 기능을 수행한다.
주기억장치에 상주하지 않고 명령어가 포함된 파일 형태로 존재하며 보조기억장치에서 교체 처리가 가능하다.
UNIX 파일 시스템의 구조
UNIX의 파일 시스템의 구조는 디스크를 블록으로 분류하여 배치한 구조를 의미한다.
부트 블록 / 슈퍼 블록 / I-node(Index node) 블록 / 데이터 블록 으로 구성
I-node 블록 : 각 파일이나 디렉토리에 대한 모든 정보를 저장하고있는 블록
정보 : 파일 소유자의 사용자 번호 (UID), 그룹번호 (GID), 파일 크기, 파일 타입, 생성시기, 최종 변경 시기,
최근 사용 시기, 파일의 보호 권한, 파일 링크 수, 데이터가 저장된 블록의 시작 주소
UNIX의 주요 명령어
fork : 새로운 프로세스 생성, 하위 프로세스 호출, 프로세스 복제 명령
wait : fork후 exec 에 의해 실행되는 프로세스의 상위 프로세스가 하위 프로세스 종료 등의 이벤트를 기다림
chmod : 파일의 보호모드 설정하여 파일의 사용허가 지정
Is : 현재 디렉터리 내의 파일 목록 확인
cat : 파일 내용을 화면에 표시
chown : 소유자 변경
*fork : 프로그램의 실행 환경. 즉, 프로그램 전체나 데이터를 위한 메모리 영역과 프로그램 실행에 필요한 운영 체제 정보. 일반적으로 TSS의 하나의 업무 아래서 취급되는 프로세스를 가리킨다
'기타' 카테고리의 다른 글
컴활1급 필기 메모 : 3과목 데이터베이스 메모 (0) | 2019.10.26 |
---|---|
기출 메모 (0) | 2019.08.01 |
정보처리 필기_전자계산기 구조_19강 메모리 용량 및 병렬 처리 (0) | 2019.07.29 |
정보처리 필기_전자계산기 구조_18강_인터럽트 (0) | 2019.07.28 |
정보처리 필기_전자계산기 구조_17강_입출력 제어 (0) | 2019.07.28 |