본문 바로가기

프로그래밍 학습/보안 이론

[정보보안기사 필기] 유닉스 운영체제의 개요 및 기능

728x90

커널의 개념(유닉스에서 젤 중요한 부분)

하드웨어 특성으로부터 프로그램들을 격리시키고 하드웨어와 직접적으로 상호작동함으로써 프로그램들에게 일관된 서비스를 제공한다. 커널의 기본개념은 파일관리 이다. 그 밖에 입출력장치 및 메모리 관리, 시스템호출 인터페이스 등이 있다. 쉘이나 유틸리티 또는 응용프로그램들은 정의된 시스템호출을 통해서 커널과 통신한다. UNIX 계열의 시스템이 부팅될 때 가장 먼저 읽혀지는 운영체제의 핵심부분으로 주기억 장치에 상주하게 되며 프로세스 스케줄링, 기억장치 관리, 파일시스템관리, 운영체제의 고유 기능을 제공한다.


- 시스템 호출(System call)

이중모드에서 사용자 모드는 특권 명령어를 사용할 수 없으며 이런 경우에 사용자 프로세스는 운영체제에게 도움을 요청하게 되는데 이를 시스템 호출이라 한다.


- 이중모드(Dual mode) 

다중 프로그래밍 환경에서는 실행 중인 하나의 프로그램의 오류가 실행중인 다른 프로그램에게 영향을 줄 수 있으므로 적절한 보호가 필요하다. 이중 모드는 두 가지 동작 모드를 제공하여 문제를 일으킬 프로세스의 실행을 제어한다.


- 사용자모드

소프트웨어 특권이 부여되지 않은 상태로 동작하며 시스템 리소스에 제한적으로만 액세스 가능하다. 보호 받는 하위 시스템들은 각자가 소유하고 있는 보호받는 공간에서 실행되며 서로 간섭하지 않는다. 


- 모니터 모드

커널모드, 슈퍼바이저 모드라 하며 문제를 일으킬 소지가 있는 명령어들은 특권 명령으로 분류하고 모니터 모드에서만 수행되도록 제한한다.


- 프로세서 관리 (유닉스는 계층은 윈도우 5계층과 다르게 3계층으로 줄어 들지만 하는일은 똑같음)

하드웨어에 의존된 가장 하위 단계 수준으로 프로세스 스케줄링을 통해 실행 가능한 프로세스 추적 관리


-주기억장치 관리 (RAM, ROM)

주기억장치의 접근을 관리 및 제어하는 처리 장치의 부분으로 주소 변환, 기억보호, 버퍼기억등의 기능을 수행


-보조기억장치 관리 (하드디스크, USB)

하드디스크나 디스켓 등의 기억장치에 대한 접근관리, 제어등을 수행하는 기능


-입출력 시스템관리

1. 컴퓨터의 입출력장치(I/O)

 중앙 시스템과 외부와의 효율적인 통신방법을 제공한다, 주변장치라고도 하며 예로 키보드, 디스플레이, 프린터, 자기테이프, 자기디스크 등이 있다.


2.장치 구동기

운영체제와 으용프로그램 및 하드웨어간의 인터페이스를 담당하는 프로그램으로 하드웨어와 응용프로그램의 연결고리이다. 장치제어기 또는 드라이버라고도 얘기한다. 장치제어기라고도 하며 장치제어기는 명령어를 장치 제어기에 입력하기 위해 하나 이상의 장치 레지스터를 갖고 있는데 장치 구동기는 이들 명령어를 발생시키고 적절하게 수행되는지를 점검하는 기능을 수행한다.


3.디스크 구동기

디스크 제어기가 가지고 있는 많은 레지스터의 사용량, 용도를 관리하게 되며, 섹터, 트랙, 실린더, 헤드 , 암의 움직임, 디스크 인터리브 계수, 모터 구동기, 헤드설정시간 등 디스크가 적절하게 작업할 수 있는 모든 기계적인 정보들을 알고 있다.


4.인터럽트와 DMA

데이터 입출력 방식 : 프로그램에 의한 입출력, 인터럽트에 의한 입출력, DMA에 의한 입출력


- 프로그램 입출력

데이터의 입출력 동작이 CPU가 수행하는 프로그램의 I/O 명령에 의해 수행된다. 따라서 프로그램 제어 하에서 데이터전송을 수행하려면 입출력을 수행할 준비가 되어 있는가를 알기위해 CPU가 주변장치의 상태를 계속 감시하고 있어야 한다.


- DMA(Direct Memory Access)

 CPU를 거치지 않고 주변장치와 메모리 사이에 직접 데이터를 전달하도록 제어하는 인터페이스 방식이다.


-버퍼링과 스풀링

버퍼링(Buffering) : 입출력 장치와 보조 기억장치는 기계적 요인 때문에 CPU와 비교할 때 매우 느린속도로 작동한다. 이와 같은 입출력장치의 느린속도를 보완하는 한 가지 방법으로 버퍼링이 있다.  한 레코드가 읽혀 CPU가 그것에 대한 연산을 시작함과 동시에 다음에 필요한 레코드를 미리 읽어서 주기억장치에 저장함으로써 CPU가 필요한 레코드를 기다림이 없도록 하는 것이다. 이와 같이 미리 읽혀진 레코드들이 존재하는 곳은 주기억장치의 일부인데 이를 버퍼라하고 이와 같은 일련의 과정을 버퍼링이다 한다.


스풀링(Spooling) : 디스크를 매우 큰 버퍼처럼 사용하는 것이다. 프로세스들은 입력 또는 출력을 실제 입출력 장치를 통하지 않고 가상적 입출력장치인 디스크를 매체로 이용한 후 이들을 다시 실제의 입력장치나 출력 장치가 행하도록 한다.


파일관리

- 운영체제는 프로그램이나 데이터를 파일단위로 관리하며 저장장치에 파일단위로 저장한다. 파일에 대한 조작, 저장방식, 접근방법등에 대한 관리 수행


- 인터럽트(방해하다)의 종류

입출력 인터럽트 : 프로세스가 요청한 입출력의 완료등과 관련하여 발생

클럭 인터럽트 :  프로세스 시간 할당량 종료와 관련하여 발생

콘솔 인터럽트 : 콘솔 터미널에서 인터럽트 키를 누를때에 발생

프로세스간 통신 인터럽트 : 임의의 프로세스가 지역 호스트 또는 원격 호스트의 다른 프로세스로 부터 통신 메시지를 받을 경우

시스템 호출 인터럽트 : 시스템 호출하였을 때 발생

프로그램 오류 인터럽트 : 프로그램의 실행 중 논리적인 오류로 인하여 발생

하드웨어 검사 인터럽트 : 하드웨어 상의 오류가 있을 때 발생


- 운영체제의 구조를 프로그램별로 분류(공통)

제어 프로그램 : 감시 프로그램, 작업 프로그램, 데이터관리 프로그램

처리 프로그램 : 언어번역 프로그램, 서비스 프로그램, 문제처리 프로그램


운영체제의 기술발전 흐름

일괄처리 -> 실시간처리 -> 시분할 처리 - >분산처리 - >다중 프로그래밍 -> 다중처리