운영체제 이해 및 관리
컴퓨터 시스템
- 데이터를 처리하는 물리적인 기계장치인 하드웨어(hardware)와 어떤 작업을 지시하는 명령어로 작성한 프로그램인 소프트웨어(software)로 구성
컴퓨터 하드웨어
- 하드웨어는 프로세서, 메모리(기억장치), 주변장치로 구성되고, 이들은 시스템 버스로 연결
프로세서CPU(중앙처리장치)
- 컴퓨터 하드웨어 구성 요소 중 운영체제와 가장 밀접한 부분으로, 컴퓨터의 모든 장치의 동작을 제어하고 연산 수행
CPU의 구성 요소 이해
- 레지스터
○ 용도에 따른 분류
▶ 전용 레지스터
▶ 범용 레지스터
○ 사용자가 정보 변경 가능 여부에 따른 분류
▶ 사용자 가시 레지스터
▶ 사용자 불가시 레지스터
○ 저장하는 정보의 종류에 따른 분류
▶ 데이터 레지스터
▶ 주소 레지스터
▶ 상태 레지스터
연산장치(ALU)
- 각종 산술 연산과 논리 연산 수행
제어장치(Control Unit)
- 프로그램 코드 해석 및 그것을 실행하기 위한 제어신호 발생
내부 CPU 버스
- 데이터 흐름, 제어 흐름
전용 레지스터란?
- 전용 레지스터란 특수한 목적을 가지는 레지스터로 PC(프로그램카운터), 상태 레지스터, 주소 레지스터, 명령어 레지스터, 누산기 등이 있다.
이전 블로그글) [해킹] - [해킹] 전용 레지스터
범용 레지스터란?
- 컴퓨터의 중앙처리장치(CPU) 내에 있으며 연산처리, 연산결과, 복귀주소등 작은 데이터를 기억하는 레지스터이다.
이전 블로그글) [해킹] - [해킹] 레지스터
시스템 버스(system bus)
- 하드웨어를 물리적으로 연결하여 서로 데이터를 주고받을 수 있게 하는 통로
- 컴퓨터 내북의 당야한 신호(데이터 입출력 신호, 프로세서 상태 신호, 인터럽트 요구와 허가 신호, 클록(clock 신호 등)를 시스템 버스로 전달
- 기능에 따라 데이터 버스, 주소 버스, 제어 버스로 구분
CPU 명령 실행 주기
- 인출 사이클(fetch cycle)
→ 메모리에서 명령어를 읽어 명령어 레지스터에 저장하고, 다음 명령어를 실행하려고 프로그램 카운터를 증가시킴
→ 인출 사이클에 소요되는 시간을 명령어 인출 시간이라고 함
- 실행 사이크(execution cycle)
→ 인출한 명령어를 해독하고 그 결과에 따라 제어 신호를 발생시켜 명령어 실행
→ 실행 사이클에서 소비되는 시간을 실행 시간이라고 함
- 간접 사이클(indirect cycle)
→ 간접 주소 지정 방법을 사용하는 실행 사이클은 명령어를 수행하기 전에 실제 데이터가 저장된 주기억장치의 주소인 유효 주소를 한 번 더 읽어 옴
- 인터럽트 사이클(interrupt cycle)
→ 인터럽트는 프로세서가 프로그램을 수행하는 동안 컴퓨터 시스템의 내부나 외부에서 발생하는 예기치 못한 사건
→ 프로세서는 실행 사이클을 완료한 후 인터럽트 요구가 있는지 검사. 인터럽트 요구가 없으면 다음 명령어를 인출하고, 인터럽트 요구가 있으면 현재 수행 중인 프로그램의 주소(프로그램 카운터) 값을 스택이나 메모리의 0번지와 같은 특정 장소에 저장. 프로그램 카운터에는 인터럽트 처리 루틴의 시자가 주소를 저장해 두었다가 인터럽트 처리를 완료하면 중단된 프로그램으로 복귀하여 계속 수행
명령어 실행 과정
- 명령어 인출 → 명령어 해석, 카운터 변경 → 피연산자 인출 → 명령어 실행 → 결과 저장
<인출 과정>
1. PC → MAR
2. MAR → MBR
PC + 1 → PC
3. MBR → IR
< 간접 사이클 과정 >
1. IR -> MAR
2. MAR -> MBR
3. MBR -> IR
인터럽트
- 현재 실행중인 프로그램을 중단하고 다른 프로그램의 실행을 요구하는 명령어
- 시스템의 처리 효율을 향상시키며, 프로그램이 실행 순서를 바꿔 가면서 처리하여 다중 프로그래밍에 사용
- 컴퓨터에 설치된 입출력장치나 프로그램 등에서 프로세서로 보내는 하드웨어 신호로 인터럽트를 받은 프로그램은 실행을 중단하고 다른 프로그램을 실행
- 단일 프로세서의 컴퓨터는 명령어를 한 번에 한 개 수행할 수 있지만, 인터럽트를 이용하면 중간에 다른 프로그램이나 명령어를 수행할 수 있음
- 예상치 못한 사용자 입력, 갑작스런 정전, 컴퓨터 시스템에서 긴급 요청, 잘못된 명령어 수행, 입출력 작업 완료와 같은 상황을 시스템이 적절히 처리하는 데 필요
- 프로그램의 정상 실행을 일시 중단했다 다시 재개하는 과정이지만, 사용자가 별도로 인터럽트 조치를 할 필요가 없고 프로세서와 운영체제가 처리
- 외부장치의 동작과 자신의 동작을 조정하는 수단으로 사용
- 인터럽트 목적으로 사용하는 제어 버스는 인터럽트 요청 회선
인터럽트 요청 회선
- 키보드에서 입력이 발생했을 때만 프로세서에 통보하여 처리하므로, 프로세서가 이벤트 발생 여부를 일일이 감시하지 않아도 됨.
- 프로세서가 외부장치의 상태를 직접 점검할 필요가 없어 이 시간 동안 다른 연산을 수행하여 프로세서의 효율을 높일 수 있음
- 인터럽트 요청 신호에 따라 인터럽트 처리 프로그램(인터럽트 서비스 루틴) 수행
- 단일 회선과 다중 회선으로 연결
- 단일 회선 : 인터럽트 요청이 가능한 모든 장치를 공통의 단일 회선으로 프로세서에 연결하는 방법. 회선 하나에 장치를 여러 개 연결하여 인터럽트를 요청한 장치를 판별하는 기능이 필요.
- 다중 회선 : 모든 장치를 서로 다른 고유의 회선으로 프로세서와 연결하는 방법. 인터럽트를 요청한 장치를 바로 판별할 수 있음.
< 인터럽트 사이클 과정 >
1. PC → MBR
2. 인터럽트 루틴 주소 → PC
PC에 저장된 주소 → MAR
3. MBR → MAR
메모리 계층 구조
- 1950 ~ 1960년대 너무 비싼 메인 메모리의 가격 문제 때문에 제안한 방법
- 메모리를 계층적으로 구성하여 비용, 속도, 용량, 접근시간 등을 상호 보완
◆ 레지스터
◆ 캐시
◆ 메인메모리
◆ 보조기억장치
레지스터
- 프로세서 내부에 있으며, 프로세서가 사용할 데이터를 보관하는 가장 빠른 메모리
메인 메모리
- 프로세서 외부에 있으면서 프로세서에서 수행할 프로그램과 데이터를 저장하거나 프로세서에서 처리한 결과 저장
- 주기억장치 또는 1차 기억장치라고도 한다. 저장 밀도가 높고 가격이 싼 DRAMDynamic RAM을 많이 사용
- 다수의 셀(cell)로 구성되며, 각 셀은 비트로 구성
- 셀이 K비트이면 셀에 2^k값 저장 가능
- 메인 메모리에 데이터를 저장할 떄는 셀 한 개나 여러 개에 나눠서 저장
- 셀은 주소로 참조하는데, n비트라면 주소 범위는 0~2^(n-1)
- 프로세서와 보조기억장치 사이에 있으며, 여기서 발생하는 디스크 입출력 병목 현상을 해결하는 역할 수행
- 프로세서와 메인 메모리 간에 속도 차이의 부담을 줄이려고 프로세서 내부나 외부에 캐시를 수현하기도 함
메모리 매핑 : 사상
- 컴파일로 논리적 주소를 물리적 주소로 변환하는 과정
- 메모리 속도
- 메모리 접근시간과 메모리 사이클 시간으로 표현
캐시
- 프로세서 내부나 외부에 있으며, 처리 속도가 빠른 프로세서와 상대적으로 느린 메인 메모리의 속도 차이를 보완하는 고속 버퍼
- 캐시의 성능은 작은 용량의 캐시에 프로세서가 이후 참조할 정보가 얼마나 들어 있느냐로 좌우됨
▶ 캐시 적중(캐시 히트) : 프로세서가 참조하려는 정보가 있을때
▶ 캐시 실패(캐시 미스) : 프로세서가 참조하려는 정보가 없을때
- 블록의 크기는 캐시의 성능으로 좌우되는데, 실제 프로그램을 실행할 때 참조한 메모리에 대한 공간적 지역성(국부성)과 시간적 지역성(국부성)이 있기 때문
▶ 공간적 지역성 : 대부분의 프로그램이 참조한 주소와 인접한 주소의 내용을 다시 참조하는 특성
▶ 시간적 지역성 : 한 번 참조한 주소를 곧 다시 참조하는 특성
- 공간적 지역성과 시간적 지역성의 발생 원인
▶ 프로그램이 명령어를 순차적으로 실행하는 경향이 있어 명령어가 특정 지역 메모리에 인접해 있다.
▶ 순환(단일 순환, 중첩 순환 등) 때문에 프로그램이 반복하더라도 메모리는 일부 영역만 참조한다.
▶ 대부분의 컴파일러를 메모리에 인접한 블록에 배열로 저장한다. 따라서 프로그램이 배열 원소에 순차적으로 자주 접근하므로 지역적인 배열 접근 경향이 있다.
보조기억장치
- 주변장치 중 프로그램과 데이터를 저장하는 하드웨어
- 2차 기억장치 또는 외부기억장치라고도 함
- 자기디스크, 광디스크, 자기테이프 등이 있음
메모리 관리
- 메모리 관리의 개념
○ 메모리 관리는 프로세스들을 위해 메모리 할당, 제거, 보호하는 활동
○ 디스크에 있는 프로그램을 실행하려면 먼저 메모리에 적재 후 메모리 관리자가 예약된 메모리 할당해 주는 것
○ 다중 프로그래밍 시스템에서 여러 프로세스가 메모리에 상주할 수 있도록 운영체제가 동적으로 메모리 세분화
- 메모리 관리 정책
○ 적재 정책 : 디스크에서 메모리로 프로세스 반입 시기 결정하는 것
▶요구 적재 : 운영체제나 시스템 프로그램, 사용자 프로그램 등 참조 요청에 따라 다음에 실행 할 프로세스를 메모리에 적재하는 오래된 방법
▶예상 적재 : 시스템의 요청을 미리 예측하여 메모리에 적재하는 방법
○ 배치 정책 : 디스크에서 반입한 프로세스를 메모리 어느 위치에 저장할 것인지 결정
○ 대치 정책 : 메모리가 충분하지 않을 때 현재 메모리에 적재된 프로세스 중 제거할 프로세스를 결정하는 교체 방법
- 메모리에 대한 두가지 관점
○ 논리적관점(논리적 주소 공간)
▶ 프로그래머가 프로그래밍에 사용하는 공간
○ 물리적관점(물리적 주소 공간)
▶ 실제 데이터나 프로그램을 저장하는 공간
- 메모리 장치의 주소 변환
○ 메모리 매핑(Memory Mapping)을 통해서 논리적 주소 → 물리적 주소
○ 메모리 관리 장치(MMU : Memory Magnagement Unit)인 H/W에서 실행된다.
○ 변환기법
▶ 고정분할
▶ 동적분할
▶ 페이징
▶ 세그먼테이션
▶ 페이지화된 세그멘테이션
- 매핑(mapping)[사상]
○ 논리적 주소와 물리적 주소의 연결
○ 바인딩(binding) : 매핑시켜 주는 작업
▶ 컴파일 → 링킹 → 동적 연결
- 동적 적재
○ 바인딩을 최대한 늦춰 실행 직전에 주소 확정하는 메모리 효율적으로 운영 방법
○ 모든 루틴을 메모리에 적재하지 않고 교체 가능한 형태로 디스크에 저장
○ 메인 프로그램만 먼저 메모리에 적재하여 수행
○ 메인 프로그램에 다른 루틴이 필요 할 때 메모리에 적재되어 있는지 조사. 적재되어 있지 않다면 해당 루틴을 메모리로 적재 하려고 호출하면서 프로그램의 주소 테이블을 갱신
○ 동적 적재는 사용하지 않을 루틴을 메모리에 적재하지 않으므로 메모리 효율적으로 사용
○ 오류가 발생하기도 하지만 프로그램 전체 양이 많을 때 더 유용
- 중첩(오버레이)
○ 실행하려는 프로그램이 메모리보다 클 때는 당장 필요하지 않은 프로그램의 일부는 중첩(오버레이)으로 설정 가능
○ 운영체제 영역과 메모리의 일부 영역에는 프로그램 실행에 꼭 필요한 명령어와 데이터만 저장, 나머지 중첩 영역에는 필요할 때 호출하여 적재하는 방법 구조
- 스와핑(프로세스 교체)
○ 프로세서 할당이 끝나고 수행 완료 된 프로세스는 보조기억장치로 보내고(스왑 아웃), 새롭게 시작하는 프로세스는 메모리에 적재(스왑 인). 프로세스는 메모리에 있어야 수행되므로 일시적으로 디스크로 이동했다가 메모리로 되돌아와 다시 수행 가능
- 메모리 적재 방법
○ 연속 메모리 적재 방법
▶ 고정분할
▶ 가변분할
○ 비연속(분산) 메모리 적재 방법
▶ 페이징
▶ 세그먼테이션
가상 메모리의 개념
○ 사용자와 논리적 주소를 물리적으로 분리하여 사용자가 메인 메모리 용량을 초과한 프로세스에 주소를 지정해서 메모리를 제한 없이 사용할 수 있도록 하는 것
○ 프로그램 전체를 동시에 실행하지 않으므로 요구한 메모리 전체가 아닌 일부만 적재해도 실행 가능
○활동 영역을 메인 메모리에 유지하면서 필요할 때는 디스크와 메모리 사이에 프로세스 코드와 데이터 저장, 다시 자동으로 전송하는(스왑 인, 스왑 아웃) 과정으 ㄹ거쳐 프로세스를 재할당, 디스크에 저장된 주소 공간은 캐시로 처리하여 메인 메모리 효율적 사용 가능
○ 메인 메모리의 제한된 응량과 중첩 사용 문제 해결
가상 메모리 관리 기법
○ Paging 메모리 관리기법
▶ 논리 주소의 고정된 페이지라고 불리는 블록들로 분할 관리하는 기법
▶ 각각의 페이지는 물리 메모리의 프레임에 맵핑
▶ 페이지를 가리키는 논리 주소에서 프레임을 가리키는 물리 주소로 변환
○ Segmentation 메모리 관리 기법
▶ 메모리를 세그먼트 세트로 나눠 관리하는 방식
▶ 세그먼트는 시작주소와 세그먼트 크기를 지정하는 길이 값으로 구성
○ Paged Segmentaion
▶ 페이지들로 세그먼트를 구성하고 세그먼트 표 참조 후 페이지표를 참조한다.
▶ 논리 주소는 세그먼트 번호, 페이지 번호, 오프셋으로 구성
입출력 관리
○ 입출력 시스템과 입출력 모듈의 개념
▶ 모니터나 프린터 같은 하드웨어 장치 뿐만 아니라 입출력 모듈까지 포함
▶ 물리적 입출력장치가 실제로 입출력을 수행하고, 입출력 모듈은 메모리나 프로세서, 레지스터 등 내부 저장장치와 물리적 입출력 장치 사이의 이진 정보를 전송 방법 제공
▶ 입출력 모듈이 프로세서를 대신하여 입출력과 관련된 복잡한 일을 처리하면 입출력 채널또는 입출력 프로세서가 되고, 단순히 프로세서의 입출력과 관련된 일을 담당하면 입출력 제어기 또는 장치 제어기가 됨
입출력 모듈의 기능
○ 내부 자원과 데이터 입출력 등 다양한 동작을 제어하고 타이밍 기능을 제공
○ 입출력 모듈이 외부장치의 타이밍과 데이터 형식, 기계적인 세부 사항들을 처리하므로 프로세서는 단순히 파일 열기나 닫기 명령만으로도 장치를 제어 가능
○ 프로세서가 입출력장치에 명령을 보내려면 입출력장치의 식별자를 주소로 지정 해야 함
○ 주소를 지정하는 방법
▶ 메모리 주소 공간과 입출력 주소 공간이 별도로 있는 전용 입출력 주소 방법
▶ 메모리 주소 공간의 일부를 입출력 주소 공간으로 공유하는 메모리 매핑 주소 방법
◎ 메모리 매핑 주소 방법은 임의의 기계 명령과 주소를 입출력장치를 지정하는 데 사용하는 등 다양한 유연성, 데이터 전송 완료를 통보하려고 인터럽트 신호 생성
○ 프로세스에서 명령을 전달받고, 관련된 메시지를 인식하는 기능 제공
○ 입출력 모듈은 명령 해독 → 데이터 교환 → 상태 보고 → 주소 인식 과정 거쳐 메시지 인식
▶ 명령 해독 : 프로세서에서 명령들을 받아 해독한다.
▶ 데이터 교환 : 데이터 버스로 프로세서와 데이터를 교환한다.
▶ 상태 보고 : 저속 주변장치의 상태를 확인하여 프로세서에 보고한다.
▶ 주소 인식 : 모듈에 연결된 여러 장치를 구분할 주소로 인식한다.
○ 버퍼링을 이용하여 전송속도 조절
○ 오류를 검출
입출력 방법
○ 프로세스 제어 입출력
▶ 프로그램 제어 입출력
▶ 인터럽트 기반 입출력
○ DMA 입출력
○ 입출력 채널
프로그램 제어 입출력 방법
○ 프로세서 내부의 입출력 데이터와 주소 레지스터를 입출력 모듈과 연결한 형태
○ 주소 레지스터와 버스 사이에서 직접 전송할 수 있는 가장 단순한 형태
○ 데이터 입력할 때는 입출력 모듈을 거쳐 한 번에 한 워드 씩만 데이터 레지스터로 전송, 입출력 데이터 레지스터에서는 프로그램을 이용하여 산술 논리연산장치로 전송
○ 데이터를 출력할 때는 산술논리연산장치에서 입출력 데이터 레지스터로 이동, 프로그램을 이용하여 입출력 모듈로 전송
인터럽트 기반 입출력 방법
○ 입출력장치가 작업을 완료 한 후에 작업과 관련된 상태와 결과를 메모리에 저장하고 인터럽트를 발생시켜 프로세서에 알림
○ 인터럽트를 받은 프로세서는 입출력 명령을 전송하고 입출력 작업 중에 다른 명령 시작
○ 프로세서가 프로세서의 도움이 필요한지 입출력장치에 확인하는 대신 입출력장치가 프로세서에 직접 신호를 주는 방법
○ 불규칙적이고 빠른 응답성을 요구할 때 적합
입출력 채널을 이용한 입출력
○ 입출력 채널 : 프로세서와 메인 메모리를 입출력장치에 결합하여 프로세서의 명령으로 입출력을 제어하는 장치
○ 채널 서브 시스템은 여러 개로 구성 가능, 프로세서와 메인 메모리의 액세스 조정
○ 채널은 사이클 스틸 사용하여 메모리에 직접 엑세스하며, 각 입출력장치는 제어장치를 사용하여 채널과 연결
○ 제어장치는 채널과 통신하고 장치를 제어하는 기능을 수행. 유사한 장치에서는 제어 장치를 하나만 사용하므로 한순간에는 장치 하나만 활성화
○ 입출력 채널에는 DMA 개념을 확장하여 입출력 명령어들을 실행할 수 있는 기능이 있으므로 입출력 동작을 완전히 제어하는 권한이 있음
○ 컴퓨터 시스템에서는 프로세서가 입출력 명령어들을 실행하지 않아도 입출력 데이터를 메인 메모리에 저장
○ 프로세서는 입출력 채널이 메인 메모리에 있는 프로그램을 실행하도록 지시하여 입출력 전송 실행. 입출력 채널은 메인 메모리에 저장된 명령어들을 실행하면서 데이터 전송 제어
채널의 종류
○ 실렉터 채널 : 어떤 장치의 입출력을 종료할 때까지 다른 장치를 실행 하지 않도록 하는 것. 자기 디스크, 자기테이프, 드럼과 같은 고속장치들은 멀티플렉서 채널을 사용하여 데이터를 고속으로 전송하기 떄문에 다른 장치들과 다중화 곤란. 이때 한 번에 하나씩 처리하는 전용 채널을 이용하여 다중화가능.
○ 멀티플렉서 채널 : 바이트 단위로 시분할하여 여러 장치의 출력 처리. 다수의 저속 중속장치(카드 리더, 프린터)들을 연결할 때 사용. 채널-메모리 연결은 장치와 채널사이의 데이터 전달 속도보다 더 빠른 속도로 데이터를 전달할 수 있기 때문에 속도가 느린 다수의 입출력장치를 동시에 동작
○ 블록 멀티플렉서 채널 : 실렉터 채널과 멀티플렉서 채널의 장점을 결합한 것, 여러 대의 고속 입출력장치들을 블록 단위로 처리. 동일한 채널에서 여러 고속장치를 활성화가능. 채널 명령어는 장치 하나와 입출력 명령어 수행 후 별도의 지시가 없어도 자동으로 다른 장치와 명령을 수행하도록 변환되는 특징. 한 채널이 여러 입출력장치를 시분할 방법으로 사용할 수 있지만 어떤 때는 장치 하나에만 서비스하므로 실렉터 채널과 비슷. 그러나 멀티플렉서 채널처럼 다른 장치 서비스를 완료할 때까지 기다리지 않아도 됨.
○ 바이트 멀티플렉서 채널 : 비교적 저속의 입출력 장치를 여러 개 접속하여 다중화하여 사용하는 채널. 중앙 처리 장치의 처리속도에 비해서 일반적으로 입출력장치의 처리속도는 상당히 늦으므로 채널을 다중으로 하여 사용하는 것이 효과적이다.
운영 체제 개요
정의
○ 컴퓨터 시스템이 제공하는 모든 H/W 와 S/W 기능을 사용할 수 있도록 해 주는 가장 중요한 시스템 소프트웨어
○ 한정된 시스템 자원(resource)을 효율적으로 사용할 수 있도록 관리 및 운영함으로써 사용자에게 최대한 편리성 제공
○ 컴퓨터 시스템과 사용자간의 인터페이스(interface)기능을 담당하는 시스템 프로그램
운영체제의 목적
○ 운영체제의 목적은 컴퓨터 시스템의 자원(하드웨어 자원, 정보)을 최대한 효율적으로 관리, 운영함으로써 사용자들에게 편의성을 제공하고자 하드웨어와 사용자 프로그램사이에 존재하는 시스템 프로그램으로 사용자 인터페이스 제공, 성능 향상 등 한정된 자원을 효율적으로 사용하는데 있다.
○ 신뢰도의 향상, 처리량의 향상, 응답 시간의 단축, 단순한 계산 능력만을 제공하는 하드웨어를 유저가 쉽게 접근할 수 있도록 제공, 제한된 시스템 소스를 효율적으로 통제하고 운영함으로써 보다 높은 성능을 발휘할 수 있도록 지원하는 것이다.
○ 처리 능력 향상(through put) : 단위 시간 내에 최대한 많은 양의 일을 처리할 수 있게 하는 것
○ 응답 시간 단축 : 사용자가 어떤 일의 처리를 컴퓨터 시스템에 의뢰하고 나서 그 결과를 얻을 때까지 소요되는 시간으로, 짧을수록 좋음
○ 신뢰도 향상 : 시스템이 주어진 문제를 어느 정도로 정확하게 해결하는가를 의미
○ 사용 가능도 향상(Aveilbaility) : 컴퓨터 시스템을 각 사용자가 요구할 때 어느 정도로 신속하게 시스템 자원을 지원해 줄 수 있는가를 나타내는 것
○ 운영체제의 기능은 프로그램 생성(Program creation), 프로그램 실행(Program execution), 입출력동작(I/O operation), 파일 시스템 조작, 통신, 오류 발견 및 응답, 자원할당(Resource allocation), 계정관리(Accoungting), 보호(Protection)등의 기능이 있다.
운영체제의 구조
○ 프로세서 관리(계층1) : 동기화 및 프로세서 스케줄링 담당 ( CPU관리 )
○ 메모리 관리(계층2) : 메모리의 할당 및 회수 기능을 담당 ( Memory 관리 )
○ 프로세스 관리(계층3) : 프로세스의 생성, 제거, 메시지 전달, 시작과 정지 등의 작업 ( Process 관리 )
○ 주변장치 관리(계층4) : 주변장치의 상태 파악과 입출력 장치의 스케줄링 ( 입출력 관리 )
○ 파일(정보)관리(계층5) : 파일의 생성과 소멸, 파일의 열기와 닫기, 파일의 유지 및 관리 담당 ( 파일과 데이터 관리 )
○ 커널은 하드웨어 특성으로부터 프로그램들을 격리 시키고, 하드웨어와 직접적으로 상호작동함으로써, 프로그램들에게 일관된 서비스를 제공한다. 커널의 기본 개념은 프로세스와 파일의 관리이다. 그밖에 입출력장치 관리, 메모리 관리 및 시스템호출 인터페이스 등이다. shell이나 유틸리티 또는 응용프로그램들은 정의된 시스템호출을 통해서 커널과 통신한다. UNIX 계열의 시스템이 부팅될 때 가장 먼저 읽혀지는 운영체제의 핵심부분으로 주기억 장치에 상주하게 되며 프로세스 스케줄링, 기억 장치 관리, 파일 시스템 관리, 운영체제의 고유 기능을 제공한다.
○ 시스템 호출(System call)
▶ 이중모드에서 사용자 모드는 특권 명령어를 사용할 수 없으며 이런 경우에 사용자 프로세스는 운영체제에게 도움을 요청하게 되는데 이를 시스템 호출이라 한다. 즉, 시스템 호출은 실행중인 프로그램과 운영체제 사이에 인터페이스를 제공하는 것이다.
○ 이중모드(dual mode) 구조
▶ 일반모드(사용자 모드)와 관리모드(모니터모드)의 특징 이해
▶ 다중 프로그래밍 환경에서는 실행 중인 하나의 프로그램의 오류가 실행 중인 다른 프로그램에게 영향을 줄 수 있으므로 적절한 보호가 필요하다. 이중 모드는 이런 보호 매커니즘 중 하나로서, 두가지 동작 모드를 제공하여 문제를 일으킬 소지가 있는 명령들을 함부로 실행할 수 없도록 제어한다.
○ 사용자 모드 : 사용자 모드의 소프트웨어는 특권이 부여되지 않은 상태로 동작하며 시스템 리소스에 제한적으로만 액세스할 수 있다. 보호받는 하위 시스템들은 각자가 소유하고 있는 보호 받는 공간에서 실행되며 서로 간섭하지 않는다. 즉, 사용자 모드에서는 제한적인 명령의 사용만 가능한다.
○ 모니터 모드 : 커널모드, 슈퍼바이저 모드라 하며 문제를 일으킬 소지가 있는 명령들은 특권 명령으로 분류하고, 이런 명령들은 모니터 모드에서만 수행되도록 제한한다. 이 모드에서는 모드 명령어 사용이 가능하다.
○ 프로세서 관리 : 하드웨어에 의존된 가장 하위 단계 수준으로 프로세스 스케줄링을 통해 실행 가능한 플세스추적 관리
○ 주기억장치 관리 : 주기억장치의 접근을 관리, 제어하는 처리 장치의 부분으로 주소 변환, 기억 보호, 버퍼 기억 등의 기능을 수행
○ 보조기억장치 관리 : 하드디스크나 디스켓 등의 기억장치에 대한 접근 관리, 제어 등을 수행하는 기능
○ 입출력 시스템 관리
▶ 장치구동기의 기능 이해
▶ 인터럽트 방식과 DMA 방식 이해
▶ 버퍼링과 스풀링 이해
○ 컴퓨터의 입출력장치(I/O 장치)는 중앙 시스템과 외부와의 효율적인 통신방법을 제공한다. 입출력장치는 일명 주변장치라고도 하는데, 가장 기본적인 것으로 키보드, 디스플레이장치, 프린터와 보조저장장치인 자기테이프나 자기 디스크 등이 있다.
○ 장치 구동기 -: 입출력 제어기
▶ 운영체제와 응용프로그램 및 하드웨어간의 인터페이스를 담당하는 프로그램으로 하드웨어와 운영체제 응용프로그램의 연결고리가 되는 프로그램으로 하드웨어 구성 요소가 운영체제 아래서 제대로 작동하는데 꼭 필요한 프로그램이며, 장치제어기 또는 드라이버라고 말하기도 한다. 장치 제어기는 명령어를 장치 제어기에 입력하기 위해 하나 이상의 장치 레지스터를 갖고 있는데 장치 구동기는 이들 명령어를 발생시키고 적절하게 수행되는지를 점검하는 기능을 수행한다.
○ 인터럽트와 DMA
▶ 컴퓨터 시스템에서 사용하는 데이터의 입출력 방식에는 프로그램에 의한 입출력, 인터럽트에의한 입출력, DMA에 의한 입출력 등이 있다.
▶ 프로그램에 의한 입출력은 데이터의 입출력 동작이 CPU가 수행하는 프로그램의 I/O 명령에 의해 수행된다. 따라서, 프로그램 제어하에서 데이터전송을 수행하려면, 입출력을 수행할 준비가 되어있는가를 알기 위해 CPU가 주변장치의 상태를 계속 감시하고 있어야 한다.
▶ DMA(Direct Memory Access)는 CPU를 거치지 않고 주변장치와 메모리 사이에 직접 데이터를 전달하도록 제어하는 인터페이스 방식으로서, 고속 주변장치 (M/T, DISK 등)과 컴퓨터간의 데이터 전송에 많이 사용한다.
버퍼링과 스풀링
○ 버퍼링(Buffering) : 입출력 장치와 보조 기억장치는 기계적 요인 떄문에 CPU와 비교할 때 매우 느린 속도로 작동한다. 이와 같은 입출력 장치의 느린 속도를 보완하는 한 가지 방법으로 버퍼링이 있다. 한 레코드가 읽혀 CPU가 그것에 대한 연산을 시작함과 동시에 입출력 장치가 곧 다음에 필요한 레코드를 미리 읽어서 주기억장치에 저장함으로써 CPU가 필요한 레코드를 기다림이 없도록 하는 것이다. 이때 이와 같이 미리 읽혀진 레코드들이 존재하는 곳은 주기억장치의 일부인데 이를 버퍼라 하고, 이와 같은 일련의 과정을 버퍼링이라 한다.
○ 스풀링(Spooling) : 버퍼링은 주기억장치를 버퍼로 사용하는 반면, 스풀링은 디스크를 매우 큰 버퍼처럼 사용하는 것이다. 프로세스들은 입력 또는 출력을 실제 입출력 장치(Physical Device)를 통하지 않고 기상적 입출력 장치(Virtual Device)인 디스크를 매체로 이용한 후, 이 들을 다시 실제의 입력 장치나 출력 장치가 행하도록 한다.
○ 파일 관리 : 운영체제는 프로그램이나 데이터를 파일단위로 관리하여 저장당치에 파일단위로 저장한다. 파일에 대한 조작, 저장 방식, 접근방법 등에 대한 관리 수행
운영체제의 기술 발전 흐름
○ 일관처리
○ 실시간 처리
○ 시분할 처리 시스템
○ 분산처리 시스템
○ 다중 프로그래밍
○ 다중 처리
프로세스(process)의 개념
○ 현재 실행 중이거나 곧 실행이 가능한 프로그램
○ 운영체제 내에 PCB를 가진 프로그램
○ 비동기적 행위(asynchronous activity)
○ 프로세스가 할당하는 개체(entity)로서 디스패치(dispatch)가 가능한 단위
프로세스의 종류
○ 운영체제 프로세스
○ 사용자 프로세스
○ 병행 프로세스
▶ 독립 프로세스 : 다른 프로세스에 영향을 주거나 받지 않는 프로세스
▶ 협동 프로세스 : 다른 프로세스에 영향을 주거나 영향을 받는 프로세스
프로세스의 상태
○ 실행과 비실행 상태로 구분
▶ 실행 상태 프로세스 : 실행, 대기/보류, 준비 세분화한다.
▶ 실행 : 명령어가 실행되는 상태, 프로세서를 점유한 상태
▶ 대기/보류 : 프로세서가 이벤트가 일어나기를 기다리는 상태
▶ 준비 : 프로세스가 프로세서를 할당 받으려고 기다리는 상태
○ 프로세스의 상태변화
▶ 어드밋(Admit) : 생성 → 준비
▶ 디스패치(Dispatch) : 준비 → 실행
▶ 할당시간 초과(Time Run out) : 실행 → 준비
▶ 대기(Blocked) : 실행 → 슬립(대기)
▶ 깨움(Wake up) : 슬립(대기) → 준비
▶ 종료(Release) : 실행 → 종료
○ 프로세스 제어블록(PCB)
스레드
○ 프로세스 처럼 프로세서를 사용하는 기본 단위
○ 프로세스 내의 개체(명령어를 독립적으로 실행할 수 있는 하나의 제어 흐름)
○ 프로세스는 스레드를 하나 이상 가질 수 있다.
○ 스레드를 경량 프로세스라고도 한다.
CPU 이용률
○ CPU 이용률 최대 ↑
○ 처리량(through put) 최대 ↑
○ 총 처리시간(turnaround time) 최소 ↓
○ 대기시간(waiting time) 최소 ↓
○ 응답시간 최소 ↓
CPU 스케줄링
○ CPU 자원을 언제, 어느 프로세스에게 배당할 것인지를 결정하는 작업을 CPU스케줄링이라고 한다.
○ CPU가 유휴 상태일때 마다 운영체제는 준비 큐에 있는프로세스 중 하나를 선택해서 실행해야 한다.
○ 선택 절차는 단기 스케줄러에 의해서 수행
○ 스케줄러는 실행 준비가 되어 있는 메모리 내의 프로세스 중에서 하나를 선택하여, CPU를 할당
프로세스 스케줄링 분류
○ 선점 스케줄링
▶ RR, SRT, MLQf, MFQ 등
○ 비선점 스케줄링
▶ FIFO, SFJ, HRN
교착 상태(Deadlock)
○ 아무리 기다려도 결코 일어나지 않을 사건을 기다리는 프로세스가 하나 있는 상태
교착 상태의 4가지 필요조건
○ 상호배제
○ 점유와 대기
○ 비선점
○ 환형 대기
보안 운영체제
○ 운영체제에서의 보안이란 자원에 대한 불법적인 수저이나 참조를 방지하는 정책과 기법 모두를 일컫는 용어로서 시스템의 자원을 외부의 침입으로부터 보호하는 것이다.
○ 보안 운영체제란 컴퓨터 운영체제상에서 내재된 보안상의 결함으로 인해 발생한 가능한 각종 해킹으로부터 시스템을 보호하기 위해 기존의 운영체제 내에 보안기능을 통합시킨 보안커널을 추가로 이식한 운영체제이다.
보안 운영체제의 주요 제공 기능
○ 물리적 분리 : 사용자별로 별도의 장비만 사용하도록 제한하는 방법
○ 시간적 분리 : 프로세스가 동일 시간에 하나씩만 실행되도록 하는 방법
○ 논리적 분리 : 각 프로세스가 논리적인 구역을 갖도록 하는 방법
○ 암호적 분리 : 내부에서 사용되는 정보를 외부에서는 알 수 없도록 암호화하는 방법
보안 운영체제의 주요 제공 기능
○ 보호 대상 및 방법
▶ 메모리
▶ 보조기억장치 상의 파일 또는 데이터의 집합
▶ 파일들의 디렉터리
▶ 하드웨어 장치
▶ 스택과 같은 자료구조
▶ 명령어
▶ 패스워드와 사용자 인증 매커니즘
▶ 보호 매커니즘
○ 보호방법
▶ 물리적 분리 : 사용자별로 별도의 장비만 사용하도록 제한하는 방법
▶ 시간적 분리 : 프로세스가 동일 시간에 하나씩만 실행되도록 하는 방법
▶ 논리적 분리 : 각 프로세스가 논리적인 구역을 갖도록 하는 방법
▶ 암호적 분리 : 내부에서 사용되는 정보를 외부에서는 알 수 없도록 하는 방법
○ 파일시스템 보호 기법
▶ 파일의 보호는 파일의 공용문제와 병행하여 고려되어야 한다. 무조건 파일을 보호하기만 하면 자원의 낭비를 가져올 수 있다.
▶ 파일의 보호는 무자격 사용자의 프로그램 무단 접근을 막기 위해 그 파일의 소유자가 보호장치를 만들어 놓은 것
보안 운영체제와 보안커널
○ 보안 운영체제의 보안 기능
▶ 사용자 식별 및 인증
▶ 임의적/강제적 접근 통제
▷ 임의적 접근통제(DAC, Discretionary Access Control): 주체나 소속 그룹의 신분(Identity)에 근거하여 객체에 대한 접근을 제한하는 방법 (신분기반정책)
▷ 강제적 접근통제(MAC, Mandatory Access Control): 객체의 비밀등급과 주체가 갖는 권한에 근거하여 객체에 대한 접근을 제한하는 방법(규칙기반정책)
▷ 객체 재사용 보호(방지)
◇ 사용자가 새로운 파일을 작성할 떄 이를 위한 기억장치 공간이 할당된다.
◇ 할당되는 기억공간에는 이전의 데이터가 삭제되지 않고 존재하는 경우가 많아 비밀 데이터가 노출될 수 있다.
▷ 완전한 조정
◇ 임의적/강제적 접근통제가 효과적이기 위해서 모든 접근을 통제하는 완전한 조정을 수행해야한다.
▷ 신뢰 경로(Trusted Path)
◇ 패스워드 설정 및 접근 허용의 변경 등과 같은 보안 관련 작업을 수행할 때 안전한 통신을 제공할 수 있어야 한다.
▷ 감사 및 감사 기록 축소
◇ 모든 보안 관련 사건은 감사 기록부(audit log)에 기록되어야 하고 감사 기록부는 보호되어야한다.
○ 보안 커널
▶ 컴퓨터 보안에 있어서 사용자 프로세스 시스템 내부의 정보 저장소에 대한 접근을 통제하는 H/w와 S/W로 구성된 localized mechanism을 말하며 , 신뢰성 프로세스로써 접근의 정확한 동작이 수행되도록 강제적 조건을 충분히 보장해야 한다.
▶ TCB(Trusted Computing Base)는 신뢰할 수 있는 프로세스를 가지고 보안커널을 이용하여 구현된다.
▶ 신뢰 컴퓨팅 기반 : 운영체제와 하드웨어, 펌웨어, 소프트웨어 등이 포함된 컴퓨터 시스템 내의 총체적 보호 매커니즘
▶ 시스템 자원에 대한 접근을 통제하기 위한 기본적 보안 절차를 구현한 컴퓨터 시스템(H/W 및 S/W)의 중심부
보안커널 설계 시 고려사항
○ 참조 모니터(Reference Monitor): 주체의 객체에 대한 모든 접근통제를 담당하는 추상머신으로 이를 실제로 구현한 하드웨어, 펌웨어, 스프트웨어로 구성된 것이 보안커널이다.
○ 반드시 부정조작이 없어야한다. (Must be tamperproof.)
○ 항상 무시되지 않고 호출되어야 한다. (Always invoked.)
○ 모든 동작을 항상 분석과 테스트를 통해 확인할 수 있어야 한다. (Must be Verifiable.)
신뢰 플랫폼 모듈(TPM)
○ 하드웨어 장치를 이용한 보안 규격, 그 장치
○ 컴퓨팅 환경에서 암호화 키를 저장할 수 있는 보안 암호 처리자를 자세히 기록한 규격
○ 주요 기능 : 디스크 암호화, DRM, 소프트웨어 라이선스 보호(관리), 암호 보호
○ 훼손 방지를 위해 하드웨어칩으로 구현(S/W로 구현할 수도 있음)
○ 물리적으로 도난을 당해도 정보의 노출이 쉽지 않다.
○ 암호화 키 생성과 지정, 패스워드 저장, 무결성 검증을 위한 측정값 저장, 인증서 관련 신뢰 연산 제공
TPM 구성요소
○ I/O
○ 암호화 보조 프로세서
○ 키 생성
○ HMAC 엔진
○ 무작위 숫자 발생기
○ SHA-1 엔진
○ 전원 탐지
○ Opt-in
○ 실행 엔진
○ 비휘발성 메모리
○ 휘발성 메모리
'기능반공부 > 기능경기대회' 카테고리의 다른 글
[정보보호산업기사] 시스템보안 p2. (0) | 2022.01.18 |
---|