운영체제(OS : Operating System)
컴퓨터 시스템의 자원들을 효율적으로 관리하며 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램들의 모임
운영체제의 목적
처리능력(Throughput) : 일정 시간 내에 시스템이 처리하는 일의 양
반환 시간(Turn Around Time) : 시스템에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간
사용 가능도(Availability) : 시스템을 사용할 필요가 있을 때 즉시 사용 가능한 정도
신뢰도(Reliability) : 시스템이 주어진 문제를 정확하게 해결하는 정도
운영체제의 기능
프로세서(처리기, processor) , 기억장치(주기억장치,보조기억장치), 입,출력장치 , 파일 및 정보들의 자원을 관리
자원을 효율적으로 관리하기 위해 자원의 스케줄링 기능제공
사용자와 시스템 간 편리한 인터페이스 제공
시스템의 각종 하드웨어와 네트워크를 관리,제어
데이터를 관리하고 데이터 및 자원의 공유 기능을 제공
그래픽 사용자 인터페이스(GUI; Graphic User Interface) : 키보드로 명령어를 직접 입력하지 않고 마우스로 아이콘이나 메뉴를 선택하여 모든 작업을 수행하는 방식
선점형 멀티테스킹 : 동시에 여러 개의 프로그램을 실행하는 멀티태스킹을 하면서 운영체제가 각 작업의 CPU 이용 시간을 제어하여 응용 프로그램 실행 중 문제가 발생하면 해당 프로그램을 강제 종료시키고 모든 시스템의 자원을 반환하는 방식
PnP(Plug and Play, 자동 감지 기능) : 컴퓨터 시스템에 하드웨어를 설치 했을 때 필요한 시스템 환경을 운영체제가 자동으로 구성해주는 기능
OLE(Object Linking and Embedding) : 다른 여러 응용 프로그램에서 작성된 문자나 그림 등의 개체를 현재 작성중인 문서에 자유롭게 연결하거나 삽입하여 편집할 수 있게 하는 기능
255자의 긴 파일명
Single-User 시스템 : 컴퓨터 한 대를 한 사람만이 독점해서 사용함
AT&T 벨 연구소, MIT, General Electric이 공동 개발한 운영체제
시분할 시스템을 위해 설계된 대화식 운영 체제
소스가 공개된 개방형 시스템
대부분 C언어로 작성, 이식성이 높고 장치, 프로세스간 호환성이 높다
다중사용자,다중작업 지원
트리 구조의 파일 시스템을 갖는다
커널(Kernel) : 하드웨어를 보호하고, 프로그램과 하드웨어 간의 인터페이스 역할을 담당. 유닉스의 가장 핵심적인 부분. 프로세스 관리, 기억 장치 관리, 파일 관리, 입,출력 관리, 프로세스간 통신, 데이터 전송 및 변환 등 여러가지 기능 수행
쉘(Shell) : 사용자의 명렁어를 인식하여 프로그램을 호출하고 명령을 수행하는 명령어 해석기
시스템과 사용자간의 인터페이스 담당. Bounce, C, Korn
유틸리티 프로그램 : 일반 사용자가 작성한 응용 프로그램을 처리하는데 사용. DOS에서의 외부 명령어에 해당됨. 에디터, 컴파일라, 인터프리터, 디버거 등
1991년 리누스 토발즈가 유닉스를 기반으로 개발한 운영체제. 그래서 유닉스랑 호환이 잘됨
안드로이드는 구글이 개발한 모바일 운영체제. 모든 코드가 공개된 개방형 소프트웨어. 자바, 코틀린
보조기억장치의 프로그램이나 데이터를 주기억장치에 적재시키는 시기, 적재 위치 등을 지정하여 한정된 주기억장치의 공간을 효율적으로 사용하기 위한 것
- 반입(Fetch) 전략
프로그램이나 데이터를 언제 주기억장치로 적재할 것인지를 결정하는 전략
요구 반입(Demand Fetch) : 실행중인 프로그램이 특정 프로그램이나 데이터 등의 참조를 요구할 때 적재하는 방법
예상 반입(Anticipatory Fetch) : 실행중인 프로그램에 의해 참조될 프로그램이나 데이터를 미리 예상하여 적재하는 방법
- 배치(Placement) 전략
프로그램이나 데이터를 주기억장치의 어디에 위치 시킬것인지 결정
최초 적합(First Fit) : 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 첫 번째 분할 영역에 배치시키는 방법
최적 적합(Best Fit) : 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역중에서 단편화를 가장 작게 남기는 분할 영역에 배치시키는 방법
최악 적합(Worst Fit) : 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 단편화를 가장 많이 남기는 분할 영역에 배치시키는 방법
- 교체(Replacement) 전략
이미 사용되고 있는 영역 중에서 어느 영역을 교체하여 사용할 것인지 결정
FIFO, OPT, LRU, LFU, NUR, SCR 등
주기억장치 할당 기법
어떻게 할당할 것인지~~
연속 할당 기법
분산 할당 기법
단일 분할 할당 기법
한순간에는 오직 한명의 사용자만이 주기억장치의 사용자 영역을 사용하는 기법
오버레이 기법
스와핑 기법
다중 분할 할당 기법
고정 분할 할당 기법 = 정적 할당 기법 : 할당 전 운영체제가 영역을 여러 개의 고정된 크기로 분할하고 준비상태 큐에서 준비중인 프로그램을 각 영역에 할당하여 수행하는 기법
가변 분할 할당 기법 = 동적 할당 기법 : 미리 분할해 놓지 않고 필요한 만큼의 크기로 영역을 분할. 고정 분할 할당 기법의 단편화를 줄이기 위해 사용
보조기억장치의 일부를 주기억장치처럼 사용하는 것
페이징(Paging) 기법
프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후 주기억장치의 영역에 적재시켜 실행
프로그램을 일정한 크기로 나눈 단위-페이지, 주기억장치의 단위-페이지 프레임
외부 단편화는 발생하지 않으나 내부 단편화는 발생할 수 있다
주소 변환을 위해서 페이지의 위치 정보를 가지고 있는 페이지 맵 테이블 필요, 비용 증가, 처리 속도 감소
세그먼테이션(Segmentation) 기법
프로그램을 다양한 크기의 논리적인 다위로 나눈 후 주기억장치에 적재시켜 실행
배열이나 함수 등과 같은 논리적인 크기로 나눈 단위 - 세그먼트, 고유한 이름과 크기를 갖는다
기억공간을 절약하기 위해 사용
주소 변환을 위해서 세그먼트가 존재하는 위치 정보를 가지고 있는 세그먼트 맵 테이블이 필요
내부 단편화는 발생하지 않으나 외부 단편화는 발생할 수 있다
페이지 부재(Page Fault)가 발생하면 가상기억장치에서 필요한 페이지를 찾아 주기억장치에 적재해야 하는데, 이때 주기억장치의 모든 페이지 프레임이 사용중이면 어떤 페이지 프레임을 선택하여 교체할 것인지를 결정하는 기법
종류 : OPT, FIFO, LRU, LFU, NUR, SCR 등
OPT(OPTimal replacement, 최적 교체)
앞으로 가장 오랫동안 사용하지 않을 페이지를 교체
페이지 부재 횟수가 가장 적게 발생하는 가장 효율적인 알고리즘
LRU(Least Recently Used)
최근에 가장 오랫동안 사용하지 않은 페이지를 교체
각 페이지마다 계수기(카운터)나 스택을 두어 현시점에서 가장 오랫동안 사용하지 않은, 즉 가장 오래전에 사용한 페이지를 교체
LFU(Least Frequently Used)
사용 빈도가 가장 적은 페이지를 교체
많이 사용되는 페이지는 교체되지 않는다
NUR(Not Used Recently)
LRU와 비슷한 알고리즘. 최근에 사용하지 않은 페이지를 교체
최근에 사용되지 않은 페이지는 향후에도 사용되지 않을 가능성이 높다는 것을 전제로 LRU에서 나타다는 시간적인 오버헤드를 줄일 수 있다
최근 사용 여부를 확인하기 위해 각 페이지마다 두 개의 비트, 참조 비트, 변형 비트가 사용된다
페이지 크기가 작을경우
- 페이지 단편화가 감소되고, 한 개의 페이지를 주기억장치로 이동시키는 시간이 줄어듦
- 불필요한 내용이 주기억장치에 적재될 확률이 적으므로 효율적인 워킹 셋 유지
- 페이지 정보를 갖는 페이지 맵 테이블의 크기가 커지고 매핑 속도가 늦어짐
- 디스크 접근 횟수가 많아져서 전체적인 입,출력 시간은 늘어남
페이지 크기가 클 경우
- 페이지 정보를 갖는 페이지 맵 테이블의 크기가 작아지고, 매핑 속도가 빨라짐
- 디스크 접근 횟수가 줄어들어 전체적인 입,출력의 효율성이 증가
- 페이지 단편화 증가, 한 개의 페이지를 주기억장치로 이동시키는 시간 증가
Locality(국부성, 지역성, 구역성, 국소성)는 프로세스가 실행되는 동안 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조하는 성질
스레싱을 방지하기 위한 워킹 셋 이론의 기반
가상기억장치 관리와 캐시 메모리 시스템의 이론적인 근거
데닝 교수에 의해 개념이 증명됨
시간 구역성(Temporal Locality) : 프로세스가 실행되면서 하나의 페이지를 일정 시간 동안 집중적으로 액세스하는 현상
공간 구역성(Spatial Locality) : 프로세스 실행 시 일정 위치의 페이지를 집중적으로 액세스하는 현상
워킹 셋(Working Set)은 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합
데닝이 제안한 프로그램의 움직임에 대한 모델로, 프로그램의 지역성 특징을 이용함
자주 참조되는 워킹 셋을 주기억장치에 상주시킴으로써 페이지 부재 및 페이지 교체 현상이 줄어들어 프로세스의 기억장치 사용이 안정된다
스래싱(Thrashing)은 프로세스의 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상
다중 프로그래밍 시스템이나 가상기억장치를 사용하는 시스템에서 하나의 프로세스 수행 과정 중에 자주 페이지 부재가 발생함으로써 나타나며 전체 시스템의 성능이 저하된다
다중 프로그래밍의 정도가 높아짐에 따라 CPU의 이용률은 어느 특정 시점까지는 높아지지만 다중 프로그래밍의 정도가 더욱 커지면 스래싱이 나타나고 CPU의 이용률은 급격히 감소된다
프로세스(Process)
실행중인 프로그램을 의미
- PCB를 가진 프로그램
- 실기억장치에 저장된 프로그램
- 프로세서가 할당되는 실체로써, 디스패치가 가능한 단위
- 프로시저가 활동중인 것
- 비동기적 행위를 일으키는 주체
- 지정된 결과를 얻기 위한 일련의 계통적 동작
- 목적 또는 결과에 따라 발생되는 사건들의 과정
- 운영체제가 관리하는 실행 단위
PCB(Process Control Block, 프로세스 제어 블록)
운영체제가 프로세스에 대한 중요한 정보를 저장해 놓는 곳
저장되어 있는 정보
- 프로세스의 현재 상태
- 포인터
- 프로세스 고유 식별자
- 스케줄링 및 프로세스의 우선순위
- CPU 레지스터 정보
- 주기억장치 관리정보
- 입,출력 상태 정보
- 계정 정보
프로세스 상태 전이는 프로세스가 시스템 내에 존재하는 동안 프로세스의 상태가 변하는 것을 의미
제출(Submit) : 작업을 처리하기 위해 사용자가 작업을 시스템에 제출한 상태
접수(Hold) : 제출된 작업이 스풀 공간인 디스크의 할당 위치에 저장된 상태
준비(Ready) : 프로세스가 프로세스를 할당받기 위해 기다리고 있는 상태
실행(Run) : 준비상태 큐에 있는 프로세스가 프로세서를 할당받아 실행되는 상태
대기(Wait), 블록(Block) : 프로세스에 입,출력 처리가 필요하면 현재 실행 중인 프로세스가 중단되고, 입,출력 처리가 완료될 때까지 대기하고 있는 상태
종료(Terminated, Exit) : 프로세스의 실행이 끝나고 프로세스 할당이 해제된 상태
Dispatch : 준비 상태에서 대기하고 있는 프로세스 중 하나가 프로세서를 할당받아 실행 상태로 전이되는 과정
Wake Up : 입출력 작업이 완료되어 프로세스가 대기 상태에서 준비 상태로 전이되는 과정
Spooling : 입출력장치의 공유 및 상대적으로 느린 입출력장치의 처리 속도를 보완하고 다중 프로그래밍 시스템의 성능을 향상시키기 위해 입출력할 데이터를 직접 입출력장치에 보내지않고 나중에 한꺼번에 입출력하기 위해 디스크에 저장하는 과정
교통량 제어기(Traffic Contoroller) : 프로세스의 상태에 대한 조사와 통보 담당
스레드(Thread)는 시스템의 여러 자원을 할당받아 실행하는 프로그램의 단위
하나의 프로세스에 하나의 스레드가 존재하는 경우 - 단일 스레드
하나 이상의 스레드가 존재하는 경우 - 다중 스레드
프로세스의 일부 특성을 갖고 있기 때문에 경량 프로세스라고도 한다
스레드 기반 시스템에서 스레드는 독립적인 스케줄링의 최소 단위로서 프로세스의 역할을 담당
스케줄링은 프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업
장기 스케줄링 : 어떤 프로세스가 시스템의 자원을 차지할 수 있도록 할 것인가를 결정하여 준비상태 큐로 보내는 작업
중기 스케줄링 : 어떤 프로세스들이 CPU를 할당받을 것인지 결정하는 작업
단기 스케줄링 : 프로세스가 실행되기 위해 CPU를 할당받는 시기와 특정 프로세스를 지정하는 작업
공정성, 처리율 증가, CPU이용률 증가, 우선순위 제도, 오버헤드 최소화, 응답시간 최소화, 반환 시간 최소화, 대기 시간 최소화, 균형 있는 자원의 사용, 무한 연기 회피
비선점(Non-Preemptive) 스케줄링은 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법이다.
프로세스가 CPU를 할당받으면 해당 프로세스가 완료될 때까지 CPU를 사용한다
프로세스 응답 시간의 예측이 용이하다
종류 : FCFS, SJF, 우선순위, 기한부, HRN
선점(Preemptive) 스케줄링은 우선 순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 스케줄링 기법이다
주로 빠른 응답시간을 요구하는 대화식 시분할 시스템에 사용되는데 많은 오버헤드를 초래한다
종류 : Round Robin, SRT, 선점 우선순위, 다단계 큐, 다단계 피드백 큐 등
IP주소는 8비트씩 4부분, 총 32비트로 구성되어 있다
A class : 국가나 대형 통신망에 사용(0~127)
B class : 중대형 통신망에 사용(128~191)
C class : 소규모 통신망에 사용(192~223)
D class : 멀티캐스트 용으로 사용(224~239)
E class : 실험적 주소. 공용되지 않음
서브네팅은 네크워크 주소를 다시 여러 개의 작은 네트워크로 나누어 사용하는 것. 네트워크 주소와 호스트 주소를 구분하기 위한 비트를 서브넷 마스크라고 하며, 이를 변경하여 네트워크 주소를 여러 개로 분할하여 사용한다
IPv6는 IPv4의 주소 부족 문제를 해결하기 위해 개발되었다
각 부분을 16진수로 표현하고 콜론으로 구분한다
16비트씩 8부분, 128비트의 긴 주소를 사용하여 주소 부족 문제를 해결할 수 있고 자료 전송 속도가 빠르다
인증성, 기밀성, 데이터 무결성의 지원으로 보안 문제를 해결할 수 있다
프로토콜은 데이터 교환을 원활하게 수행할 수 있도록 표준화 시켜놓은 통신 규약
구문(Syntax) : 전송하고자 하는 데이터의 형식, 부호화, 신호 레벨 등을 규정
의미(Semantics) : 두 기기간의 효율적이고 정확한 정보 전송을 위한 협조 사항과 오류 관리를 위한 제어 정보를 규정
시간(Timing) : 두 기기 간의 통신 속도, 메시지의 순서 제어 등을 규정
프로토콜의 기능 : 단편화, 재결합, 캡슐화, 흐름 제어, 오류 제어, 동기화, 순서 제어, 주소 지정, 다중화, 경로 제어, 전송 서비스
TCP/IP는 서로 다른 기종의 컴퓨터들이 데이터를 주고받을 수 있도록 하는 표준 프로토콜
TCP(Transmission Control Protocol) : OSI 7계층의 전송 계층. 가상 회선 방식을 기반으로 하는 연결형 서비스를 제공. 패킷의 다중화, 순서 제어, 오류 제어, 흐름 제어 기능을 제공
IP(Interner Protocol) : OSI 7계층의 네트워크 계층. 데이터그램 방식을 기반으로 하는 비연결형 서비스를 제공. 패킷의 분해/조립, 주소 지정, 경로 선택 기능을 제공
회복은 데이터베이스가 손상되었을 때 손상되기 이전의 정상 상태로 복구하는 작업
연기 갱신 기법(Deferred Update) : redo작업만 가능. 트랜잭션이 완료될 때 까지 DB에 실질적인 갱신을 연기
즉각 갱신 기법(Immediate Update) : redo,undo 사용 가능. 트랜잭션이 데이터를 갱신하면 트랜잭션이 부분 완료 되기 전이라도 즉시 실제 DB에 반영
그림자 페이지 대체 기법 : 갱신 이전의 DB를 페이지마다 복사본을 별도 보관해 놓고 장애가 발생해서 롤백했을 때 갱신 이후의 실제 페이지 부분을 그림자 페이지로 대체하여 회복시킴
검사점 기법(Check Point) : 정보와 검사점을 로그에 보관해두고 장애 발생 시 검사점으로부터 회복 작업을 수행하여 회복시간을 절약
병행제어(Concurrency Control)란 동시에 실행되는 트랜잭션 간의 상호 작용을 제어
로킹(Locking) : 트랜잭션들이 어떤 로킹 단위를 액세스하기 전에 Lock(잠금)을 요청해서 록이 허락되어야만 그 로킹 단위를 액세스 할 수 있도록 하는 기법. 상호 배타적
타임 스탬프 순서(Time Stamp Ordering) : 트랜잭션이 실행을 시작하기 전에 시간표를 부여하여 부여된 시간에 따라 트랜잭션 작업 수행
최적 병행수행(검증 기법, 확인 기법, 낙관적 기법) : 대부분의 트랜잭션이 판독 전용 트랜잭션일 경우 충동률이 매우 낮아서 시스템의 상태를 일관성 있게 유지한다는 점 이용
다중 버전 기법 : 갱신될 때마다의 버전을 부여하여 관리
로킹 단위는 한꺼번에 로킹할 수 있는 객체의 크기
로킹 단위가 크면 관리하기 쉽지만 병행성 수준이 낮아짐
로킹 단위가 작으면 오버헤드가 증가하지만 병행성 수준이 높아진다
교착상태(dead lock)는 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상
필요 충분 조건. 하나라도 충족되지 않으면 교착상태가 발생하지 않는다
상호 배제(Mutual Exclusion) : 한번에 한개의 프로세스만이 공유 자원을 사용할 수 있어야 함
점유와 대기(Hold and wait) : 최소한 하나의 자원을 점유하고 있으면서 대기하는 프로세스가 있어야 함
비선점(Non-preemption) : 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없어야 함
환형 대기(Circular Wait) : 대기하는 프로세스들이 원형으로 구성되어 있어 자신에게 할당된 자원을 점유하면서 앞이나 뒤에 있는 프로세스의 자원을 요구해야함
교착 상태 해결 방법
예방 기법(Prevention) : 사전에 시스템 제어. 자원 낭비가 가장 심함
회피 기법(Avoidance) : 은행원 알고리즘. 가능성을 배제하지 않고 교착상태가 발생하면 적절히 피해나감
발견 기법(Detection) : 시스템에 교착상태가 발생했는지 점검하여 교착상태에 있는 프로세스와 자원을 발견. 교착상태 발견 알고리즘과 자원 할당 그래프 사용
회복 기법(Recovery) : 교착상태를 일으킨 프로세스를 종료하거나 교착상태의 프로세스에 할당된 자원을 선점하여 프로세스나 자원을 회복