(정보처리기사) 운영체제

*완전 연결 구조

>각 사이트들이 시스템 내의 다른 모든 사이트들과 직접 연결된 구조이다.
>사이트 수가 n개이면 링크(연결)수는  n*(n-1)/2개 이다.
>모든 사이트를 연결해야 하므로 기본비용은 많이 들지만 각 사이트가 직접 연결되므로 통신비용은 적게 든다.
>하나의 링크가 고장나더라도 다른 링크를 이용 할 수 있으므로 신뢰성이 높다.

*스레드
> 자신만의 스택과 레지스터를 갖으며 독립된 제어 흐름을 갖는다.
* 스레드의 분류

  • 사용자 수준의 스레드: 사용자가 만든 라이브러리를 사용하여 스레드를 운영한다.속도는 빠르지만 구현이 어렵다.
  • 커널 수준의 스레드: 운영체제의 커널에 의해 스레드를 운용한다. 구현이 쉽지만 속도가 느리다.


유저 영역: 사용자가 구현한 프로그램 동작시 사용하게 되는 메모리 영역
커널 영역: 운영체제 동작시 사용하게 되는 메모리영역

커널 레벨 쓰레드:
쓰레드를 생성 및 스케줄링하는 주체가 커널


장점: 안정성과 다양한 기능
단점: 유저모드와 커널 모드로의 전환으로 인해 성능이 저하된다.
(참고: 사용자가 구현한 프로그램은 기본적으로 유저모드에서 동작하다가 Windows커널이 실행되어야 하는 경우 커널모드로의 전환이 일어나고 일을 마치면 다시 유저모들 전환된다.)

*유저 레벨 쓰레드:
커널에 의존적잊 않은 형태로 쓰레드의 기능을 제공하는 라이브러리를 활용
(참고: 스케줄러는 쓰레드를 지원하지 않아 쓰레드의 존재를 모른다. 따라서 프로세스 단에서 스케줄링을 한다.  따라서 쓰레드끼리의 스케줄링은 유저가 구현해야 한다)

장점: 유저모드에서 커널모드로의 전환이 필요없다. 성능이 좋다
단점: 프로그래밍 하기 어렵고 커널 레벨 쓰레드에 비해 결과 예측이 어렵다


<교착상태 해결 방법>
  • 예방기법(Prevention): 교착 상태가 발생하지 않도록 사전에 시스템을 제어하는 방법으로, 교착 상태 발생의 4가지 조건 중에서 어느 하나를 제거(부정)함으로써 수행되며,자원의 낭비가 가장 심한 기법임.
  • 회피기법(Avoidance): 교착상태 회피 기법은 교착상태가 발생할 가능성을 배제하지 않고 교착 상태가 발생하면 적절히 피해나가는 방법으로, 주로 은행원 알고리즘이 사용된다.
  • 발견 기법(Detection): 시스템에 교착 상태가 발생했는지 점검하여 교착 상태에 있는 프로세스와 자원을 발견하는 것을 의미함
  • 회복기법(Recovery); 교착상태를 일으킨 프로세스를 종료하거나 교착상태의 프로세스에 할당된 자원을 선점하여 프로세스나 자원을 회복하는 것을 의미함
<파일 시스템의 기능>
  • 파일 공유를 위해서 판독만 허용,기록만 허용, 수행만 허용 또는 이들을 여러 형태로 조합한 것 등 여러종류의 액세스 제어 방법을 제공한다.
  • 사용자가 적합한 구조로 파일을 구성할 수 있도록 한다.
  • 불의의 사태를 대비하여 파일의 예비(Backup)와 복구(Recovery)등의 기능을 제공한다.
  • 사용자가 물리적 장치 이름 대신에 기호화된 이름을 사용 할 수 있도록 한다.
  • 사용자가 파일을 편리하게 사용할 수 있도록 파일의 논리적상태(디렉토리)를 보여주어야 한다.
  • 파일의 정보가 손실되지 않도록 데이터 무결성을 유지해야한다.

<주/종 처리기(프로세서)>

종 프로세서는 연산만 담당한다.

  • 주 프로세서: 입, 출력과 연산을 담당한다. 운영체제를 수행함.
  • 종 프로세서: 연산만 담당한다. 입.출력 발생시 주프로세서에게 서비스를 요청함.사용자 프로그램만 담당함.

****워킹 셋(Working Set): 프로세스가 일정시간 동안 자주 참조하는 페이지들의 집합
***세마포어: '신호기', '깃발'을 뜻하며, 각 프로세스에 제어신호를 전달하여 순서대로 작업을 수행하도록 하는 기법
****교환(Swapping): 하나의 프로그램 전체를 주기억장치에 할당하여 사용하다 필요에 따라 다른 프로그램과 교체하는 기법


<보안 요건>
  • 기밀성(Confientiality, 비밀성): 시스템 내의 정보와 자원은 인가된 사용자에게만 접근이 허용된다. 정보가 전송중에 노출되더라도 데이터를 읽을 수 없다.
  • 무결성(Integrity): 시스템 내의 정보는 인가된 사용자만 수정 할 수 있다. 정보의 내용이 전송 중에 수정되지 않고 전달되는 것을 의미한다.
  • 가용성(Availability): 인가받은 사용자는  언제라도 사용 할 수 있다.
  • 인증(Authentication): 정보를 보내오는 사람의 신원을 확인한다. 사용자를 식별하고,사용자의 접근권한을 검증한다.
  • 부인방지(Non Repudiation): 데이터를 송.수신한 자가 송. 수신사실을 부인 할 수 없도록 송.수신 증거를 제공함.
<프로세스의 정의>
  • PCB를 가진 프로그램
  • 실기억장치에 저장된 프로그램
  • 프로세서가 할당되는 실체
  • 프로시저가 활동 중인 것.
  • 비동기적 행위를 일으키는 주체
  • 지정된 결과를 얻기 위한 일련의 계통적 동작
  • 목적 또는 결과에 따라 발생되는 사건들의 과정
  • 운영체제가 관리하는 실행 단위
<UNIX파일시스템의 Inode에 포함되는 정보>
* 파일 소유자의 사용번호 및 그룹번호, 파일크기, 파일유형, 생성시기, 최종 변경시기, 최근 사용시기, 파일의 보호 권한, 파일 링크 수, 데이터가 저장된 블록의 시작 주소 등.


<스풀(Spool)>

중앙처리 장치가 입출력장치와 독립적으로 동작하도록 함으로 써 중앙처리 장치에 비해 주변장치의 처리속도가 느려서 발생하는 대기시간을 줄이기 위해 고안된 기법.
스풀링은 스풀을 적용하는 것 또는 스풀을 위해 마련된 저장공간을 채우는 동작을 뜻한다..
스풀링은 스풀 공간으로 보조기억장치의 일부를 사용한다.

<파일 디스크립터의 특징>

  • 파일을 관리하기 위해 시스템(운영체제)이 필요로 하는 파일에 대한 정보를 갖고 있는 제어 블록을 의미하며, 파일제어블록(FCB: File Control Block)이라고도 한다.
  • 파일 디스크립터는 파일마다 독립적으로 존재하며, 시스템에 따라 다른 구조를 가질 수 있다.
  • 보통 파일 디스크립터는 보조기억장치 내에 저장되어 있다가, 해당 파일이 Open될 때 주기억장치로 옮겨진다.
  • 파일 디스크립터는 파일 시스템이 관리하므로 사용자가 직접 참조 할 수 없다.

<운영체제의 목적>
1. 처리능력(Throughput): 일정시간 내에 시스템이 처리하는 일의 양
2. 반환시간(Turn Around Time): 시스템에 작업을 의뢰한 시간부터 처리가 완료 될 때까지 걸리는 시간.
3. 사용가능도(Availability): 시스템을 사용할 필요가 있을 때 즉시 사용가능한 정도
4. 신뢰도(Reliability): 시스템이 주어진 문제를 정확하게 해결하는 정도


<디스크 스케줄링 기법>
- 사용할 데이터가 디스크상의 여러 곳에 저장되어 있을 경우 데이터를 액세스 하기 위해 디스크 헤드를 움직이는 경로를 결정하는 기법을 디스크 스케줄링이라고 합니다. 그리고 이런 스케줄링을 운영체제가 하는 일입니다. 디스크 스케줄링을 통해서 처리량을 최대화 하고 응답시간은 최소화 하는 걸 목적으로 하고 있습니다.

2. 디스크 스케줄링 기법
- FIFO : 디스크 대기 큐에 가장 먼저 들어온 트랙에 대한 요청을 먼저 서비스하는 기법입니다. 가장 간단하고 공평한 기법이지만 가장 비효율적인 기법이기에 초창기에 사용되었던 방식입니다. 

100 
180 
40 
120 
130 
70 
80 
150 
200 

이동 순서 : 50 → 100 → 180 → 40 → 120 → 0 → 130 → 70 → 80 → 150 → 200
헤드의 이동 거리 : 790 ( 50 + 80 + 140 + 80 + 120 + 130 + 60 + 10 + 70 + 50 )
- SSTF : 탐색거리가 가장 짧은 트랙에 대한 요청이 먼저 서비스 받는 기법입니다. 현재 헤드 위치에서 가장 가까운 거리에 있는 트랙으로 헤드를 이동시키는 방법으로 처리량이 많은 일괄 처리 시스템에 유용합니다. 그리고 현재 서비스한 트랙에서 가장 가까운 트랙에 대한 서비스 요청이 계속 발생하는 경우, 먼 거리의 트래에 대한 서비스는 무한정 기다려야 하는 기아상태가 발생할수 있다는 단점이 있습니다.


100
180
40
120
0
130
70
80
150
200
이동 순서 : 50  40  70  80  100  120  130  150  180  200
헤드의 이동 거리 : 370 ( 10 + 30 + 10 + 20 + 20 + 10 + 20 + 30 + 20 + 200 )
- SCAN : 현재 진행 중인 방향으로 가장 짧은 탐색 거리에 있는 요청을 먼저 서비스 하는 기법입니다. 이 기법은 엘리베이터 알고리즘이 사용된 기법이기 때문에 엘리베이터를 생각하시면 이해하기 쉬우실 껍니다. 현재 헤드의 위치에서 진행 방향이 결정되면 탐색 거리가 잛은 순서에 따라 그 방향의 모든 요청을 서비스하고, 끝까지 이동한 후 역방향으로 서버스를 합니다. 헤드의 진행 방향에 있는 대기 요청뿐만 아니라 새로운 요청도 서비스하며, 현재의 진행 방햐에 더 이상의 요청이 없을 때에만 이동 방향을 바꿉니다. 그렇기 때문에 SSTF에서 발행하던 응답 시간의 편차를 줄일 수도 있습니다.


100
180
40
120
0
130
70
80
150
200
 

이동 순서 : 50  40  0  70  80  100  120  130  150  180  200
헤드의 이동 거리 : 250 ( 10 + 40 + 70 + 10 + 20 + 20 + 10 + 20 + 30 + 20 )

- C-SCAN : SCAN기법에서 조금더 발전된 기법으로 항상 바깥쪽에서 안쪽으로 움직이면서 가장 짧은 탐색 거리를 갖는 요청을 서비스 하는 기법입니다. 헤드는 트랙의 바깥쪽에서 안쪽으로 한 방향으로만 움직이며 서비스하여 끝까지 이동한 후, 안쪽에 더 이상의 요청이 없으면 헤드는 가장 바깥쪽의 끝으로 이동한 후 다시 안쪽으로 이동하면서 요청을 서비스 하기에 트랙의 안쪽과 바깥쪽의 요청에 대한 서비스가 공평한 기법입니다.

100
180
40
120
0
130
70
80
150
200

이동 순서 : 50  40  0  200  180  150  130  120  100  80  70
헤드의 이동 거리 : 380 ( 10 + 40 + 200 + 20 + 30 + 20 + 10 + 20 + 20 + 10 )
- N-step SCAN : SCAN 기법을 기초로 하여 어떤 방향의 진행이 시작 될 당시에 대기중이던 요청에 대해서만 서비스하고 진행 도중 도착한 요청들은 반대 방향 진행 때 서비스 하는 기법입니다. SSTF나 SCAN기법 보다 응답 시간의 편차가 적으며 특정 방향에 많은 수의 요청이 도착할 경우 반대 방향에서의 무한 지연을 방지 하기 위한 기법입니다.

- LOOK : SCAN 기법을 사용하되 진행 방향의 마지막 요청을 서비스한 후 그 방향의 끝으로 이동하는 것이 아니라 바로 역방향으로 진행하는 기법입니다.


참고: http://morphys.tistory.com/entry/06-디스크-관리디스크-스케줄링-기법

<페이징 기법 vs 세그먼테이션 기법>

  • * 페이징 기법:
  •  가상 기억장치에 보관되어 있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후 나눠진 프로그램(페이지)을 동일하게 나눠진 주기억장치의 영역(페이지 프레임)에 적재시켜 실행하는 기법이다.
  • 프로그램을 일정한 크기로 나눈 단위를 페이지(Page)라고 하고, 페이지 크기로 일정하게 나누어진 주기억 장치이 단위를 페이지 프레임이라고 한다.
  • 외부 단편화는 발생하지 않으나 내부 단편화는 발생한다.
  • 주소 변환을 위해서 페이지의 위치정보를 가지고 있는 페이지 맵 테이블이 필요하다.
  • 페이지 맵 테이블 사용으로 비용이 증가되고, 처리속도는 감소한다.
   <세그먼테이션 기법>
  •    가상 기억 장치에 보관되어있는 프로그램을 다양한 크기의 논리적 단위로 나눈 후 주기억장칭 적재시켜 실행시키는 기법이다.
  • 프로그램을 배열이나 함수 등과 같은 논리적인 크기로 나눈 단위를 세그먼트라고 하며, 각 세그먼트는 고유한 이름과 크기를 갖는다.
  • 기억장치의 사용자관점을 보존하는 기억장치 관리기법이다.
  • 세그먼테이션 기법을 이용하는 궁극적인 이유는 기억공간을 절약하기 위해서 이다.
  • 주소 변환을 위해서 세그먼트가 존재하는 위치정보를 가지고 있는 세그먼트 맵테이블이 필요하다.
  • 세그먼트가 주기억장치에 적재될 때 다른 세그먼트에게 할당된 영역을 침범할 수 없으며,이를 위해 기억장치 보호키(Storage Portection Key)가 필요하다.
<교체 기법>

OPT(Optimal replacement,최적교체): 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 기법.
FIFO: 각 페이지가 주기억장치에 적재될 때 마다 그때의 시간을 기억시켜 가장 먼저 들어와서 가장 오래 있었던 페이지를 교체하는 기법

LRU(Least Recently Used): 최근에 가장 오랫동안 사용하지 않은 페이지를 교체하는 기법

LFU(Least Frequently Used): 사용빈도가 가장 적은 페이지를 교체하는 기법

NUR(Not Used Recently): LRU와 비슷한 알고리즘으로, 최근에 사용하지 않은 페이지를 교체하는 기법.(참조비트와 변형비트가 있다)


<로더의 종류>

1. Compile And Go로더

  • 별도의 로더 없이 언어 번역 프로그램이 로더의 기능까지 수행하는 방식
  • 연결기능은 수행하지 않고  할당, 재배치, 적재작업을 모두 언어번역프로그램이 담당한다.
2. 절대로더(Absolute Loader)
  • 목적프로그램을 기억장소에 적재시키는 기능만 수행하는 로더
  • 할당 및 연결작업은 프로그래머가 프로그램 작성시 수행하며,재배치는 언어번역프로그램이 담당한다.
3. 직접 연결로더(Direct Linking Loader)
  • 일반적인 기능의 로더로, 로더의 기본 기능 4가지를 모두 수행하는 로더이다.
  • 재배치 로더, 상대로더 라고도 한다.
4. 동적 적재로더(Dynamic Loading Loader)
  • 프로그램을 한꺼번에 적재하는 것이 아니라 실행시 필요한 분분만을 적재하는 것으로,호출시 적재(Load-On-Call)라고도 한다.
  • 프로그램의 크기가 주기억장치의 크기보다 클 때 유리하다.
<직접 파일(Direct File)>
  • 파일을 구성하는 레코드를 임의의 물리적 저장공간에 기록하는 것으로,직접 접근 방식(DAM)이라고도 한다.
  • 레코드에 특정 기준으로 키가 할당되며,해싱함수를 이용하여 이 키에 대한 보조기억장치의 물리적 상대 레코드 주소를 계산한 후 해당하는 주소에 레코드를 저장한다.
  • 레코드는 해싱함수에 의해 계산된 물리적 주소를 통해 접근 할 수 있다.
  • 임의 접근이 가능한 자기디스크나 자기드럼을 사용한다.
  • 장점: 직접 접근 기억장치의 물리적 주소를 통하여 파일의 각 레코드에 직접 접근하거나 기록 할수 있으먀, 접근 및 기록의 순서에는 제약이 없다.
  • 단점:레코드의 주소 변환 과정이 필요하며, 이 광정으로 인해 시간이 소요된다. 기억공간의 효율이 저하될 수 있다. 기억장치의 물리적 구조에대한 지식이 필요하고, 프로그래밍 작업이 복잡하다.
<페이징 기법에서 페이지 크기에 따른 특징>
  • 페이지크기가 작을경우: 페이지 단편화가 감소되고, 한개의 페이지를 주기억장치로 이동하는 시간이 줄어든다. 프로세스 수행에 필요한 내용만 주기억 장치에 적재 할 수 있고, Locality(국부선)에 더 일치할 수 있기 때문에 기억장치의 효율이 높다. 페이지정보를 갖는 페이지 맵 테이블의 크기가 커지고 맵핑속도가 늦어진다. 디스크 접근횟수가 많아져서 전체적인 입.출력 시간은 늘어난다.
  • 페이지크기가 클 경우: 페이지 맵테이블의 크기가 작아지고, 맵핑 속도가 빨라진다. 디스크 접근 횟수가 줄어들어 전체적인 입.출력의 효율성이 증가된다. 페이지 단편화가 증가되고 ,한개의 페이지를 주기억장치로 이동하는 시간이 늘어난다. 프로세스수행에 불필요한 내용까지도 주기억장치에 적재 될수 있다.
<커널과 쉘>
1. 커널: 유닉스의 가장 핵심적인 부분이다. 컴퓨터가 부팅 될 때 주기억장치에 적재된 후 상주하면서 실행된다. 하드웨어를 보호하고 ,프로그램과 하드웨어 간의 인터페이스 역할을 한다. 프로세스(CPU스케줄링) 관리, 기억장치 관리, 파일관리, 입출력관리,프로세스간 통신, 데이터전송및 변환등 여러가지 기능을 수행한다.

2. 쉘: 사용자의 명령어를 인식하여 프로그램을 호출하고 명령을 수행하는 명령어 해석기이다. 시스템과 사용자간의 인터페이스를 담당한다. DOS의 CoMMAND.COM과 같은 기능을 수행한다. 주기억장치에 상주하지 않고, 명령어가 포함된 파일 형태로 존재하며 보조기억장치에서 교체처리가 가능하다.

<운영체제 운용기법>

  • 일괄처리 시스템(Batch Processing System):  초기의 컴퓨터 시스템에서 사용된 형태로 일정량 또는 일정기간동안 데이터를 모아서 한꺼번에 처리하는 방식
  • 다중프로그래밍 시스템: 하나의 CPU와 주기억장치를 이용하여 여러개의 프로그램을 동시에 처맇는 방식
  • 시분할시스템: 여러명의 사용자가 사용하는 시스템에서 컴퓨터가 사용자들의 프로그램을 번갈아 가며 처리해 줌으로써 각 사용자에게 독립된 컴퓨터를 사용하는 느낌을 주는 것이며 라운드 로빈방식이라한다.
  • 다중처리 시스템: 여러개의 CPU와 하나의 주기억장치를 이용하여 여러개의 프로그램을 동시에 처리하는 방식
  • 실시간 처리시스템: 데이터 발생즉시 또는 데이터 처리 요구가 있는 즉시 처리하여 결과를 산출하는 방식
  • 다중모드(Multi-Mode Processing): 일괄처리 시스템, 시분할 시스템, 다중처리 시스템, 실시간 처리시스템을 한 시스템에서 모두 제공하는 방식
  • 분산처리 시스템:여러개의 컴퓨터(프로세서를)통신회선으로 연결항 하나의 작업을 처리하는 방식

<HRN 스케줄링>

  • 실행시간이 긴 프로세스에 불리한 SJF기법을 보완하기 위한 것으로,대기시간과 서비스시간을 이용하는 기법
  • 우선순위 계산 공식을 이용하여 서비스 시간이 짧은 프로세스나 대기시간이 긴 프로세스에게 우선순위를 주어 CPU를 할당한다.

<NUR(Not Used Recently)>
  • LRU와 비슷한 알고리즘으로, 최근에 사용하지않은 페이지를 교체하는 기법이다.
  • 최근에 사용되지 않은 페이지는 향후에도 사용되지 않을 가능성이 높다는 것을 전제로, LRU에서 나타나는 시간적인 오버헤드를 줄일 수 있다.
  • 최근의 사용여부를 확인하기 위해 각 페이지마다 2개의 비트, 즉 참조비트와 변형비트가 사용된다.
  • **참조비트: 페이지가 호출되지 않았을 때는 0, 호출되었을 때는 1로한다
  • **변형비트: 페이지가 변경되지 않았을 때는 0, 변경되었을 때는 1로한다.
<UNIX 명령어>
  • cp: 파일을 복사함
  • cat:파일 내용을 화면에 표시함
  • fsck: 파일시스템을 검사하고 보수함
<UNIX파일 시스템의 구조>
  • 부트블록: 부팅시 필요한 코드를 저장하고 있는 블록
  • 슈퍼블록: 전체 파일 시스템에 대한 정보를 저장하고 있는 블록
  • I-node 블록(Index-node): 각 파일이나 디렉토리에 대한 모든 정보를 저장하고 있는 블록
  • 데이터블록: 디렉토리 별로 디렉토리 엔트리와 실제 파일에 대한 엔트리가 저장되어 있는 블록
<운영체제의 성능 평가기준>
  • 처리능력(Throughput): 일정시간내에 시스템이 처리하는 일의양
  • 반환시간(Turn Around Time): 시스템에 작업을 의뢰한 시간부터 처리가 완료될 때까지의 반환시간
  • 사용가능도(Availability): 시스템을 사용할 필요가 있을 때 즉시 사용가능한 정도
  • 신뢰도(Reliability): 시스템에 주어진 문제를 정확하게 해결하는 정도

댓글

이 블로그의 인기 게시물

(네트워크)폴링방식 vs 롱 폴링방식

(ElasticSearch) 결과에서 순서 정렬

(18장) WebSocekt과 STOMP를 사용하여 메시징하기