1. 운영체제의 구성과 유형
- 컴퓨터의 시스템 자원을 관리하고 컴퓨터 프로그램이 동작하기 위한 서비스를 제공하는 프로그램들의 모음
- 커널 : 응용 프로그램과 하드웨어 수준의 처리 사이의 가교 역할
- 마이크로 커널 : 메모리 관리, 멀티태스킹, 프로세스간 통신(IPC) 등 최소한의 요소만 커널내에 남김
- 일체형 커널 : 커낼 내부 요소들이 서로 효율적으로 상호작용(UNIX, LINUX)
- 일괄처리(batch) , 시분할(대화형), 실시간(증권시스템), 분산 처리
- 프로세스는 메모리에 code 프로그램이 data(static,heap, stack)를 PCB(제어) 하도록 하는 것이다.
- 윈도우는 자식 프로세스는 새로운 프로그램을 생성하나, UNIX,Linux는 자식프로세스는 부모 프로세스와는 다른 프로그램을 실행하는 방식으로 작동한다.
- 하나의 프로세스에는 하나 이상의 스레드가 존재하며 스레드는 디스패칭의 단위(자원소유의 단위)이다.
- 프로세스 스케줄링은 실시간/시분할에 높은 우선순위를 두는 선점스케줄링과 프로세스가 대기 상태나 종료상태로 전이 될때 까지 계속 실행 되는 비선점 스케줄링이 있다.
- 문맥(context) : CPU의 모든 레지스터와 기타 운영체제에 따라 요구되는 프로세스의 상태를 말하며, 문맥교환(context switching)은 CPU가 현재 실행하고 있는 프로세스의 문맥을 PCB에 저장하고 다른 프로세스의 PCB로부터 문맥을 복원하는 작업을 뜻한다.
- 스케줄링의 평가기준은 평균반환시간에 평균대기시간을 나눈다.
- 스케줄링 알고리즘에는 비선점스케줄링으로 FCFS(먼저온거), SJF(실행시간적은거부터) , HRN(실행시간과 대기시간을 고려해 응답비율을 산정한다.) 이 있고 선점스케줄링으로 SRT(실행시간적은거 선점), RR(순서대로 하나 할당량 제한에 따라 선점), 다단계 피드백큐(입출력, 연산중심 할당량을 부여하여 선점) 가 있다.
2. 병행프로세스
- 병행프로세스와 협력 프로세스인 경우 발생 가능한 문제(상호배제, 동기화, 통신)가 있는데 상호배제와 동기화 문제를 해결하기 위해 다이스트라가 세마포어를 제안했다. 상호배제는 2개 이상의 프로세스가 동시에 임계영역을 수행하지 못하도록 하는 것이고, 동기화는 2개이상의 프로세스에 대한 처리순서를 말하며 통신은 데이터공유(IPC)이다.
- 세마포어 mutex 초깃값은 1, 진입영역 P(mutex) , 해제영역 U(mutex) 그리고 대기큐는 FIFO로 동작한다.
- 버퍼를 두고 다투는 생산(data input)/소비자(data output) 문제
- 공유자원 상호배제로 인한 판독기(read)/기록기(write) 우선순위 문제
- IPC에서 공유메모리는 동일변수로 관리해 고속통신 응용프로그램에 적합하고, 소량데이터 메시지를 주고받는 것은 운영체제 적합하다.
- IPC에는 하나의 통신링크가 두 프로세스에 양방향으로 연결되어 대칭형/비대칭형 주소(수신자가 여러 송신자와 통신링크)를 지정하는 직접통신이 있고, 프로세스 사이에 우편함을 통해 메시지를 전달하는 간접통신이 있다. 우편함이 순신프로세스 소속이면 수신자가 하나이고 통신링크가 단방향이고, 수신프로세스 종료시 우편함이 사라진다. 우편함이 운영체제 소속이면 수신자가 여럿이고 한순간에 하나의 수신자만 가능 하며, 운영체제가 수신자를 관리하고 통신링크는 양방향이다.
3. 교착상태(deadlock)
- 프로세스 자원 사용절차( 요구 -> 사용 -> 해제) 에서 요구 과정에서 가용한 자원이 없으면 자원을 획득할 때까지 대기한다. 이 때 여러개의 프로세스가 서로 상대방의 작업이 끝나기만 기다리고 있어 어느 쪽도 자원을 얻지 못하고 영원히 진행하지 못하는 상태를 말한다.
- 교착상태는 자원에 대한 배타적 통제권을 가진 상호배제, 한자원 할당중 또다른 자원이 해제를 대기하는 점유대기, 할당자원이 타의에 의해 해제되지 않는 비선점, 프로세스 자원 및 점유된 자원의 요구관계가 환형을 이루는 4가지 필요조건이 있다.
- 교착상태 처리기법은 4가지 필요조건을 예방하고 필요한 자원의 최대량에 대한 정보를 활용하여 회피하고, 탐지하여 발생한 경우 복구 조치를 한다.
- 교착상태 예방으로 환형대기 조건제거로 모든 자원에 일련번호를 지정하여 프로세가 자우너을 요구 할 때 일련번호 기준으로 항상 오름차순이 되도록 요구한다. 그리고 프로세스가 자원을 요구할 때 그보다 일련번호가 작은 자원만 점유하도록 한다.
- 각 자원의 단위 자원이 하나밖에 없는 경우 변형된 자원할당 그래프를 이용하고 각 자원의 단위자원이 여러개일 수 있는 경우 은행원 알고리즘을 이용한다.
- 메모리는 프로세스가 다른 할당영역을 침범하지 않게 함으로써 보호하는데 이제한을 넘어 운영체제를 호출하려면 시스템 호출을 이용해야 한다.
- 메모리배치기법은 동적분할 다중 프로그래밍에서 새로 반입된 프로그램이나 데이터를 메모리의 어느 위치에 배치할 것인가를 결정한다.
https://velog.io/@tnwls2/9.-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B4%80%EB%A6%AC-%EA%B8%B0%EB%B2%95
4. 메모리 관리
- 프로세스는 프로그램 카운터(PC)를 참조하여 수행될 명령을 메모리에서 읽어 CPU로 수행하는 것이다.
- CPU(레지스터) , 캐시메모리, 메모리, 보조기억장치로 갈수록 대용량이고 느리다. 반대로갈수록 즉 레지스터가 접근속도가 빠르고 비트당 기억장치 비용이 제일 높다.
- 메모리관리에는 메모리를 여러개의 고정된 크기의 영역으로 고정분할하여 분할영역마다 큐를 두고 적재하거나 하나의 큐만 두고 큐에 들어온 프로세스는 어느 분할영역에든 적재하게 할 수 있다. 수행할 프로세스의 크기를 미리알고 그에 맞춰 고정분할을 하는 것은 현실적이지 않아서 동적분할로 메모리의 분할경계가 고정되지 않고 각 프로세스에 필요한 만큼의 메모리만 할당할 수 있다. 동적분할 작은 빈틈같은 메모리 누수로 통합과 집약이 필요하다.
- 동적분할 다중프로그래밍에서 새로 반입된 프로그램이나 데이터를 메모리의 어느 위치에 배치할 것인가를 결정한다.
- 최초적합 :프로세스가 적재될수 있는 빈 공간 중에서 가장 먼저 발견되는 곳을 할당
- 후속 적합 : 이전에 탐색이 끝난 그 다음 부분부터 시작하여 사용 가능한 빈 공간 중에서 가장 먼저 발견되는 곳을 할당
- 최적 적합: 필요한 공간을 제공할 수 있는 빈공간중 가장 작은 곳을 선택하여 할당
- 최악 적합 : 필요한 공간을 제공할 수 있는 빈공간 중 가장 큰곳을 선택하여 할당
- 가상 메모리 : 메모리 크기보다 더 큰 기억공간이 필요한 프로세스는 실행이 불가하기에 메모리 크기보다 더 큰 기억공간이 필요한 프로세스도 실행할수 있게 하는 방법이다.
- 사상(mapping) : 프로세스 실행을 위해 가상주소를 실주소로 변환하는 과정이다. 동적 주소변화(DAT)로 프로세스가 실행되는 동안 사상매핑이 일어난다. 가상주소 공간에서 연속적인 주소가 실주소공간에서도 연속적일 필요는 없다.
- 블록단위 주소 변환: 동적 주소변환을 위한 정보를 가진 표를 주소변환 사상표라고 한다. 주소변환이 바이트나 워드 단위로 이뤄지면 변환에 필요한 정보량이 너무 많아 비효율적이다. 그래서 블록단위로 주소를 변환하는 블록 사상(매핑)시스템을 가진다. 가상 메모리의 각 블록이 메모리의 어디에 위치하는지 관리한다. 블록구성방식에는 블록의 크기가 동일한 페이지 방식과 블록의 크기다 다른 세그먼트가 방식이 있다.
- 페이징 기법에는 직접사상/연관사상에 의한 동적주소변환 방법이 있는데, 논리적 의미와 무관한 동일 크기의 페이지로 나누고, 메모리 보호는 페이지 단위로 이루어지며 외부단편화가 발생하지 않으나 내부 단편화(프로세스의 크기가 분할된 메모리 크기보다 작아 빈공간 생김)는 발생가능하다.
- 페이징/세그멘테이션 혼용기법은 세그멘테이션 기법의 논리적 장점과 페이징기법의 관리적 장점을 합친 것이다. 가상 메모리를 세그먼트 단위로 분할 후 각 세그먼트를 다시 페이지 단위로 분할 한다. 메모리는 페이지 프레임으로 분할한다. 가상주소 v = (s , p, d)
- 메모리 호출은 어느 시점에 페이지 또는 세그먼트를 메모리에 적재할 것인가를 결정하는 기법이다. 요구/예상 페이지 호출기법의 2종류가 있다.
5. 페이지 교체 알고리즘
- FIFO(오래 있었던 것 교체하면 가장 많이 쓰이는 페이지 교체시킬 가능성 있다.), LRU (오랫동안 사용되지 않은 페이지를 선택하여 교체하는데 참조시간/리스트순차가 오래된 것을 이용해 구현한다.), LFU( 메모리참조가 적은 것을 교체할 경우 가장최근에 메모리로 옮겨진 페이지가 교체될 가능성이 높고 초기 많은 사용후 더 이상 사용되지 않는 페이지는 교체 가능성이 낮다 그래서 참조 ), 2차기회페이지 교체 ( 변형된 원형 큐를 이용해 구현한다. 포인터는 마지막에 추가된 페이지의 다음 위치를 가리키는 클릭 페이지 교체 알고리즘을 이용한다.
- 페이징을 위한 커널 코드영역, 보조기억장치 드라이버 영역, 시간을 맞춰 동작해야 하는 코드 영역, 입출력 장치를 위한 데이터 버퍼 영역은 교채 제외 페이지이다.
- 프로세스별 페이지 집합관리은 프로세스마다 사용할 수 있는 페이지 프레임의 개수만큼 메모리에 유지되는 페이지 집합을 말한다. 집합의 크기가 작을 수록 시스템 처리량이 증대된다. 집합의 크기가 클수록 프로세스별 페이지 부재는 감소한다. 각 프로세스가 사용할 수 있는 페이지 프레임 갯수를 관리한다.
- 워킹세트 알고리즘 : 페이지 부재비율을 감소시키기 위해 Denning이 제안한 모델로 W(t,q) 시각 t에 t를 포함한 직전 q시간 동안 참조한 페이지의 집합이다. 프로세스가 수행됨에 따라 그 프로세스의 워킹세트는 변할 수 있으며 워킹세트의 크기도 달라 질 수 있다. 프로세스의 워킹세트를 메모리에 유지시키는 것이 원칙이고, 워킹세트를 메모리에 유지하지 않으면 쓰래싱이 유발 가능하다. 쓰래싱은 페이지 부재가 비정상적으로 많이 발생하여 프로세스 처리보다 페이지 교체처리에 너무 많은 시간을 소비하여 시스템의 처리량이 급감하는 현상을 말한다. 워킹세트 크기 q의 최적값을 알기 어렵고 변화가능하며 과거를 통해 미래를 예측하는 것이 정확하지 않을 수 있다.
- PFF알고리즘은 페이지 부재빈도를 이용하여 프로세스별 페이지 집합의 크기를 변화시키는 기법이다. PFF의 상한과 하한을 정해 상한보다 높으면 1증가하고 하한보다 낮으면 그 사이에 참조되지 않았던 페이지를 모두 제거한다. 프로세스별 페이지 집합이 워킹세트 알고리즘 처럼 자주 바뀌지 않는 장점이 있다.
6. 장치관리
- 전용장치(드라이브,프린터,플로터), 공용장치(여러프로세스에 동시에 할당하여 스케줄링) , 가상장치(전용장치를 공용장치처럼 보이게하는데 스풀링을 적용한 플로터가 있다.)
- 장치제어기는 장치를 직접적으로 다루는 전자장치로 장치에서 발생하는 각종 데이터를 전자신호로 변환하여 운영체제로 보내며, 운영체제가 요청하는 명령을 받아 장치를 구동한다. 운영체제가 보내는 출력을 장치에 맞게 변환한다.
- 장치드라이버는 응용 프로그램의 입출력 요청을 해당장치에 맞도록 변환하는 것이다. 장치의 종류나 제조사에 따라 장치제어기가 이해하는 명령이나 명령의 종류가 다를 수 있기 때문에 보통 장치 제조사에서 해당 장치의 드라이버도 같이 제공한다.
- CPU장치는 장치제어기의 레지스터를 이용하여 장치의 상태를 확인하거나 장치에 명령한다. 메모리의 특정 영역을 장치제어기의 레지스터와 대응시켜두어 메모리를 읽고 쓰는 것으로 CPU가 장치를 사용한다.
- 입출력 처리유형으로 프로세스가 진행하며 입출력이 발생하는 경우 프로그램, 인터럽트, DMA의 세가지 방법이 있다.
- 프로그램 방법은 CPU만 이용하는 폴링(polling)을 이용하여 입출력을 처리하는데, CPU가 입출력 장치의 상태를 지속적으로 확인하여 CPU가 원하는 상태가 될 때까지 기다린다. CPU낭비가 심해 비효율적이다.
- 인터럽트방법은 인터럽트(interrupt)를 이용하여 입출력을 처리하는데 인터럽트는 어떤 장치가 다른 장치의 작업을 잠시 중단시키고 자신의 상태를 알리는 기능이다. 프로세스를 대기상태로 보내고 인터럽트가 발생할 때까지 CPU는 다른 프로세스를 처리 할 수 있다.
- DMA(Direct Memory Access)를 이용하여 입출력을 처리하는데 DMA제어기를 이용하여 CPU를 통하지 않고 메모리에 직접 접근하여 데이터를 전송하는 방법이다. 인터럽트 발생 횟수를 단 한번으로 줄여 CPU효율을 증대한다. 사이클 스틸링은 CPU와 DMA제어기가 동시에 메모리 액세스를 시도하면 DMA제어기에 우선권을 주는 것을 말한다.
- 버퍼링 : CPU데이터의 처리속도와 I/O장치의 데이터 전송속도의 차이로 인한 문제를 버퍼를 통해 해결한다. 메모리를 일시적인 데이터 저장소인 버포로 이동한다.(순환버퍼링)
- 스풀링 : 입출력 프로세스와 저속 입출력장치 사이의 데이터 전송을 자기 디스크와 같은 고속장치를 통하도록 하는 것인데 프로세스 입장에서는 입출력 작업이 빨리 끝난다. 전용장치를 가상장치로 변화시킨다.
7. 저장장치 및 파일 관리
- 순차접근 저장장치 - 데이터를 순차적으로 읽거나 쓸 수 있어서 초기 접근시간이 오래걸린다. 대량의 데이터 백업용으로 좋다.
- 직접접근 저장 장치 - 지정한 위치를 직접 찾아 데이터를 읽거나 쓸 수 있는 저장장치(자기디스크, 광디스크, SSD)
- 광디스크(CD-ROM, DVD, 블루레이)는 나선형인 하나의 트랙으로 구성되어 디스크 표면에 레이저를 쏘아 반사되는 빛의 차이를 이용한다.
- SSD는 읽고 쓰기가 가능하면서 전력 공급이 없어도 데이터가 지워지지 않는 메모리를 이용한다. 자기디스크보다 속도가 빠르고 전력소모가 적다. 용량대비 가격이 비싸며 수명이 짧다.
- 디스크 스케줄링은 디스크 접근 요구를 효율적으로 처리하는 순서를 결정하는 작업으로 프로세스들의 요구를 디스크 큐에 두고 관리한다. 기계적 동작이 최소화 되도록 디스크 큐를 재배열한다.
- 스케줄링은 탐구시간 최적화와 회전지연시간 최적화 형태가 있다.(탐구시간, 회전지연시간, 전송시간)
- 디스크 스케줄링 알고리즘(FCFS : 먼저온 순서대로 하는데 디스크 부하가 높으면 응답시간이 길어진다, SSTF :탐구시간짧은거 부터 하여 일괄처리 운영체제에 적합하다, SCAN : 양 끝 트랙사이를 왕복하며 진행방향의 가장 가까운 접근 요구를 먼저 처리 하여 SSTF의 응답편차를 어느 정도 개선한다., C-SCAN : SCAN에서 한쪽방향으로만 처리해서 양 끝 트랙에 대한 접근 요구 차별 제거 한다., LOOK : SCAN에서 한쪽 방향이나 접근 요구 없으면 방향 바꿈, C-LOOK : C-SCAN에서 진행방향으로 더 이상 접근 요구가 없으면 방향을 바꾸어 가장 먼 접근 요구의 트랙까지 이동, SLTF 스케줄링 : 동일 실린더의 여러 섹테에 대한 접근 요구에 대해 회전 지연시간이 가장 짧은 것을 먼저 처리로 높은 부하상태에 유용하며 이론적인 최적해와 거의 일치한다.)
- 파일 관리자의 요수(액세스, 파일 관리, 보조기억장치, 파일 무결성 관리)
- 파일 구조는 파일을 구성하는 레코드들이 보조기억장치에 배치되는 방식이며, 접근 방식은 순차 파일(물리적순서), 인덱스된 파일(순차/직접 모두 가능하여 보통 디스크에 이용) 그리고 직접파일방식(레코드 키로 물리적 주소로 연결)이 있다.
- 분산시스템은 자원공유(프린터), 성능향상(병렬 동시수행), 신뢰성 향상(고장시 대비), 통신편리성(단일시스템과 같은 서비스 제공)의 장점이 있다.
- 분산시스템의 네트워크 구성은 비교적 저렴한 트리구조(노드나 링크 고장시 시스템이 둘이상으로 분리), 저렴한 스타형과 버스형(중심노드, 버스 고장시 위험), 비싼 링형(하나의 링크나 노드 고장나도 연결 안끊어짐)이 있다.
- 분산 운영체제는 데이터 이주(원격을 로컬로), 프로세스 이주(로컬 프로세스를 원격으로 보냄), 계산이주 방식(원격 결과만 로컬에서 받음:RPC)으로 운영한다.
- 분산파일 시스템 : 클라이언트가 원격 파일을 로컬파일 처럼 사용할 수 있게 해준다.(RPC를 통해 구현시 네트워크 사용 많아지면 효율성 문제가 나타나기에 캐시를 이용하면 전체 시스템의 성능 높인다. 그러나 캐시 교체 정책과 캐시 일관성 문제가 있다.)
- 분산메모리 모델은 원격 메모리 모델(API이용)과 분산공유 메모리 모델(DSM-하나의 주소공간으로 하나처럼 한다 복잡하고 큰데이터 처리에 유의 하나 성능이 떨어질 수 있고 제어가 어렵다. NUMA라는 각 프로세서가 로컬 메모리를 갖는 분산 공유 메모리가 있는데 저장위치에 따라 속도차이가 발생한다.)이 있다.
- 원격프로시저호출(RPC) : 프로세스가 네트워크로 연결된 다른 컴퓨터에 있는 프로시저를 실행시키는 것으로 마치 같은 컴퓨터에 잇는 것처럼 이용할 수 있게 한다.
8. 운영체제 보안
- 무결성(데이터 정확), 가용성, 기밀성(주체가 합법적)
- 보안 정책(권한,접근제어,감사)과 매커니즘(암호,인증,보안등급)
- 임의적 접근제어(DAC) : 자원의 보호보다 공유가 중요할 때
- 강제적 적브제어(MAC) : 주체에는 허가등급, 객체에는 비밀등급이 주어진다.
- 역할기반접근제어(RBAC) : 주체는 역할이 주어졌을 때, 그리그 그 역할에 권한이 주어졌을 때만 권한 사용가능
- 감사 : 발생한 이벤트는 해당 내용 정보가 기록되어야 하고 변조되지 않고 보존되어야 하며, 감사과정을 통해 로그 파일을 조사하여 발생한 이벤트를 추적하고 침해 사고 등이 발생했는지 여부를 확인하고 감시해야 한다.
- 하드웨어 보호 : 이중모드 연산(사용자모드와 커널모드), 메모리보호(기준레지스터와 한계 레지스터), CPU보호(무한루프 방지 위해 주기적으로 인터럽트를 발생시키는 장치), 입출력보호(한 프로세스의 입출력에 다른 프로세스가 영향을 미치면 안되며 입출력은 커널 모드에서 동작)
- 운영체제 보안 모델에서 정보흐름모델에는 벨라파듈라모델 , 비바 모델이 있다. 벨라파듈라모델(BLP)모델은 상위에서 하위 보안수준으로 가며 기밀성 유지에 초점이 있다. 비바 모델이 하위에서 상위로 가며 무결성을 보장하기 위해서 한다.
- 보안커널(TCB의 하드웨어 , 펌웨어, 소프트웨어 요소)
- 리눅스 : 낮은 성능의 하드웨어에서 동작 가능하나 유지보수,보안 문제가 있고 하드웨어 호환성 문제가 있다.
- 리눅스커널 IPC(세마포어, 메시지큐 공유메모리), 파일시스템(ext4,FAT,NTFS,HPFS) 지원등이 있다.
- 임베디드시스템 : 특정한 기능을 수행하기 위해 하드웨어와 소프트웨어를 결합하여 설계된 컴퓨터(ex 세탁기)로 보통 실시간 시스템에 이용된다. 경성(항공기전자제어)/연성(멀티미디어재생) 실시간 시스템이 있다.
- 임베디드 리눅스는 저성능 CPU를 감안하여 성능이 최적화 되게 한다.(경성실시간시스템에는 적합하지 않다.)
- 윈도우 : 마이크로커널을 확장한 형태로 LPC(프로세스 간의 정보교환), 가상메모리 관리, 객체관리(자원은 객체), 프로세스 관리를 한다.
- 안드로이드 : 배터리로 동작하기에 전력소모량을 줄이고 무선네트워크로 인터넷에 연결되며 터치 스크린 등 일반적인 PC환경과 다르다.( 저수준 운영체제와 고수준 사용자 인터페이스가 결합된 형태)
- 안드로이드는 리눅스에 기반한 일체형 커널구조로 ARM,x86 CPU르라 지원한다. C,C++로 구현된 운영체제에 Java로 개발된 응용프로그램이 동작한다. iOS에 비해 다양한 하드웨어를 지원하기 때문에 특정 하드웨어에서만 동작하는 소프트웨어가 존재하는 파편화 문제가 있다.
- 안드로이드는 응용 프로그램을 처음 설치할 때 중간코드를 실제 기계 코드로 번역하고, 이 후 실행할 때 번역된 코드를 실행해 성능을 높인다. 설치시 코드를 번역하는 과정이 포함되기 때문에 설치에 시간이 더 걸린다.( 안드로이드 런타임:ART)
LIST
'4차산업혁명의 일꾼 > Java&Spring웹개발과 서버 컴퓨터' 카테고리의 다른 글
javascript/jsp및 프론트 복습 (0) | 2024.06.17 |
---|---|
웹개발의 추억을 반추하며 스프링 MVC 기초공사 복습과 스프링 Security (0) | 2024.06.17 |
컴퓨터를 보호하고 정보를 지키자~! 컴퓨터 보안~! (2) | 2024.06.01 |
정보를 공유하고 교류하는 컴퓨팅 정보통신망~! (2) | 2024.05.31 |
컴퓨터 보안 기초 정리 (58) | 2024.02.26 |