정보보안기사/2024 최적합 정보보호론

PART6. 시스템 보안 - SECTION 1. 운영체제 개요

코드라니(CODERANY) 2026. 2. 25. 06:31

1. 운영체제(Operating System) 개요
운영체제, 보안, 유닉스, 리눅스 할거임.

가. 운영체제의 정의
오퍼레이션 시스템을 이야기함. 윈도우, 유닉스, 리눅스, 맥, 안드로이드, IOS
운영체계의 목적은 키보드, 마우스, 프린터, 메모리 저장장치 CPU 등의 하드와 소프트웨어 장비를 관리해야하는데, 그건 사람이 할수 없으니까 하다보니 운영체계가 사람대신 관리해주고 사용자 인터페이스, 상호작용하는거
사용자가 나의 작업을 시켜야함. 상호작용의 방식에는 명령어 종류나 윈도우방식(아이콘이나 마우스)
운영체제가 없으면 깡통이랑 다를바가 없음.
한정된 자원을 효율적으로 관리해줌.
사람이 있고 하드웨어에는 cpu임
운영프로그램을 사람이 보는거고, 유틸리티=운영체계를 도와주는 작은 프로그램. 그다음에 운영체계가 있고, 초창기엔 운영체계가 직접 하드웨어를 관리했는데, 하다보니까 하드웨어의 발달이 더 빠름. 그래서 하드웨어를 전담으로 관리하는 커널이 개발됨.

나. 운영체제의 목적
(1) 처리능력(Throughput)의 향상
높은게 좋음
(2) 신뢰도(Reliability)의 향상
높은게 좋음.
(3) 응답시간(Response Time) 단축
내가 명령을 내렸는데 cpu가 명령을 시작할 때 까지 걸리는 시간
(4) 반환시간(Turn-around Time)의 쵯소화
내가 내린 명령의 최종 결과값을 나한테 반환하는 시간
(5) 사용가능도(Availability) 향상
높은게 좋음

다. 운영체제 서비스
가) 사용자 인터페이스(User Interface)
사용자와 상호작용하는 것 cli가 커멘드(엣날 도스) 1990~2000년대 사이 명령어를 쳐서 컴퓨터 구동시키고 한글하고 그런거 가르치는 학원이 있었음.
근데 이건 학원에서 따로 배워야하니까, 힘들어서 그래픽유저 인터페이스가 만들어짐. 아이콘+마우스 두개가 있으면 따로 메뉴얼을 안봐도 직관적으로 실행시키는 거임. -> 그래칙 유저 인퍼테이스
인터페이스는 상호작용을 이야기하는거임.

이런것도 인터페이스고

이런식으로꽂는 것도 인터페이스임.

도스처럼 직접 명령어를 쳐서 실행시키는cli도 있음

아이콘같은게 있는게 gui임.


책엔 없지만 상식으로
윈도우 체크박스: 여러개 선택가능
라디오 버튼: 둘 중 하나
다이얼로그 박스 yes/no
텍스트박스는 직접 입력
토글은 on/of f
드롭다운은 글꼴 선택할 떄 많이 쓰임.

cli와 커멘드 라인 인터페이스의 대표 = 유닉스

그래픽 유저 인터페이스는 우리가 흔히 쓰는 거고, 이게 종류가 있는데 nui, vui가 있음.

Vui 실험적 단계도 있음.

나) 프로그램 수행(Program Execution)
다) 입/출력 연산(Input-Output Operation)
입력은 키보드 마우스
출력은 꼭 프린터로 프린터하는거 뿐만 아니라 모니터로띄우는 것도출력임.
라) 파일시스템 조작(File System Manipulation)
파일 시스템 조작은 탐색기임. 이게 폴더와 파일들을 일목요연하게 볼 수 있음
마) 통신(Communication)
인터넷, 쌍방향통신할 수 있는거임 464p 공유 메모리 기법과메시지 전달 기법이 있음. 공유 메모리 기법이 강결합 두개의 포로세스가 서로 메모리를 공유함. 속도는 빠른데 동기화 문제 발생, 작업의 순서를 맞춰야하는데 동기화가 실패하면 잘못된 연산을 하게됨. 근데 속도는 빠름.
메세지 전달 기법은 약결합인데, 커널이 대신 자료를 동기화 문제를 해결하면서 메시지를 대신 전달해줌. 즉 메시지 전달 기법이 장점은 안전한데 단점은 속도가 느림.
커널이 메시지를 대신 전달해줌
바) 오류 탐지(Error Detection)
사) 자원 할당(Resource Allocation)
아) 회계(Accounting)
내가 쓴 만큼 돈 냄
자) 보호(Protection)와 보안(Security)

tip. 커널(kernel)
■ 커널
다양한하드웨어 cpu 메모리, 주변장치 그런 것들이 있고, 사람이 보는 건 어플(응용프로그램)을 봄. 전산은 용어를 알아야 질문을 할 수있음. 용어를 모르면 어떻게 질문할 지 모르므로 용어를 알아야함.
용어중에 시스템 소프트 웨어라는게 있는데
운영체계 유틸리티 컴파일러 db, 운영체계 안에서 하드웨어를 대신 관리해주는 커널을 퉁쳦서 시스템 소프트웨어라고 말하고, 이 커널이 운영체계를 대신해서 하드웨어를 관리함.

커널은 하드웨어 특성으로부터 프로그램을격리시킨다.
사용자가 하드웨어를 굳이 알 필요가 없음
운영체계를 대신해서 커널이 하드웨어를 관리함.
이렇게 다양하고복잡한 하드웨어 특성으로부터 프로그램을 관리함.
운영체계의 핵심 부분으로 주기억 장치에 상주함.
용량크다고 주기억 장치가 아님 hdd,ssd는 보조기억장치고, ram은 주기억 장치임.
요새는 추세가캐시가cpu안에 들어있고 동작하는건 캐시가 바깥에 있는거랑 똑같이 동작함

그래서 이제 내가 프로그램을 깐다, 깔면 명령어의 집합이고, 한글/게임 등등.
그럼 내가 지금 프로그램을 컴퓨터에 설치하면 프로그램을 구성하는 명령어들이 보조기억장치에 까는거고, cpu가 자주 사용하는 명령어들을 캐시에다가 넣어 놓는 거임.
예를 들어 내가 한글이라는 프로그램을 내 컴퓨터에 설치하면 프로그램이
보조기억장치에 깔림. 그럼 모니터에 한글 아이콘이 생기고 그걸 더블클릭하면 모래시계로 바뀌고 그 과정을 로딩한다고 함. 한글 명령어 중 모니터 에 한글이라는 프로그램을 띄워야함. 모니터에 띄울 때 다 필요하진 않을거고 일부분만 필요하겠지. 그걸 주기억장치 램으로 로딩함. 모레시계가 다 끝나면 모니터에 한글이 뜨겠지. 그 주기억 장치에 있는 명령어 중 사용자들이 특히 자주 사용하는 명령어들을 캐시 메모리에 옮김(빠름). 가장속도가 빠른게 레지스티고, 그리고캐시메모리, 주기억장치, 보조기억 장치 순으로 점점 느려짐.  

미리 컴퓨터의 반응 속도를 높이려고 사용자가 자주 사용하는 명령어를 캐시메모리로 옮겨놓고, 사용자가 저장버튼을 누르면 그걸 처리하기 위한 명령어를 cpu는 캐시멩모리에서찾겠지 해당 명령어가 있으면 히트hit한거고, 워드는 명령어단위로 뒤에 배움
이번에는 사용자가 구석의 이상한 버튼을 누름. 이번에는 캐시에 없넹 이건 miss난거임. 그럼 주기억장치로 가서 해당 명령어를 찾아야함. 그리고 그 명령어를 캐시 메모리에 엎어치는거임.
그 다음에 다시 캐시를 뒤지면 이제 있겠지. 그럼 갖다 쓰는거임. 이 과정을 빠르게 반복하며 컴퓨터가 돌아감.
램은 주기억 장치고 이 커널은 주기억장치(램)에 상주함.
■ 커널의 역할
1) 추상화
내가 그림을 그림. 그럼 뭐지 싶음. 복잡한걸 단순하게 그림 운영체계의 복잡한 내부 구조를 감추고 깔끔하게 일관성있는 언터페이스를 제공하기 위한 추상화임.
2) 보안
3) 자원관리

라. 운영체제의 동작원리
가) 개념
나) 이중모드 종류(Dual Mode)

사용자 모드와 커널모드(특권모드)임.  내가 예를들어 하드웨어가 프린터야. 내가 프린터 버튼을 누르면 사용자 모드에서 사용자 프로세스가 동작을 하다가 내가 프린터를 누르면 시스템 호출을 해서 얘가 커널 모드로 바뀌고, 이 커널이 하드웨어를 관리함. 그래서 내가 프린트를 함 그리고 끝나면 리트(?)하는 거임. 이 과정을 반복을 하면서 커널이 하드웨어(프린터)를 관리하는 것 

(1) User Mode(사용자 모드)

사용자 프로그램이 실행되는 상태

필요에 의해 순간순간 특권 모드(커널모드)로 강제 전환된다

특권 명령을 실행하려 하면 인터럽트가 걸려 해당 프로그램을 강제로 종료 시킨다.

 -> 강제 종료는 아니고 콜드 시키는 거임, 잠깐동안 막아놓는거임. 그러고 쓰는 것.

(2) 커널모드(슈퍼바이저 모드, 시스템 모드, 특권모드: Privileged Mode)

시스템 전체레 접근할 수 있는권한

사용자 모드에서는 실행이 불가능 -> 시스템 호출을 통해 커널 모드로 바뀜.

프린터, 읽기, 저장 등은 모두  커널 모드에서 실행됨.
다) Dual-mode Operation

tip. 시스템 호출(System Call)

 
2. 운영체제의 구조(Operating System Structures)
가. 계층적 접근(Layered Approach)
가) 1계층 프로세서 관리 담당: CPU

프로세스 = 실행중인 프로그램

나) 2계층 메모리 관리(기억장치 관리) 담당: 주기억장치(RAM)

다) 3계층 프로세스 관리 담당: 실행된 프로그램
라) 4계층 주변장치 관리 담당: 키보드, 마우스, 프린터 등
마) 5계층 파일관리 담당: 탐색기 

 -> 여기서 커널이 운영체제를 대신해서 하드웨어를 관리함.
 
3. 운영체제의 기술 발전 흐름 

이게 참 곤란한게 책마다 조금씩 다름. 법으로 정의된게 아니라 각 학자별로 기준이 다른 채 분류 됨.

그래서 시험에 나왔던 것만 한 번 보는 것으로.


가. 운영체제 시스템의 발전
1) 개념

세대 운영체제의 발전
1세대 일괄처리, 저급언어
2세대 다중프로그램, 다중처리, 실시간, 고급언어, OS 도입
OS가 2글자니까 2세대
운영체계(운영체계에서 여러개의 프로그램을 동시에 띄움)가 도입이 되어 다중프로그램이 가능해 지는 세대가 2세대
3세대 다중모드, UNIX, TSS(시분할처리시스템)
Time Shard System, TSS는 3글자니까 3세대.. 
4세대 분산처리
5세대 인공지능(AI)

2) 일괄처리 시스템(Batch Processing System)

빨래도 매일하지 않음. 며칠 몰아서 함. 왜? 느리기 때문에 어쩔 수 없이 몰아서 한 방에 함.

그럼 지금은 어디에 쓰냐? 급여계산, 지불계산, 연말결산, 전기세, 수도세 등 한 방에 몰아서 하는 업무에 사용됨.

3) 다중프로그램(Multi-Programming System)

OS(운영체계)가 도입이 되어 여러개의 프로그램을 동시에 띄워서 사용할 수 있게 됨.
4) 시분할 시스템(Time Sharing System)

TSS 시분할은 3세대 

아주 짧은 일정 시간동안만 SPU를 사용하고 다음 사용자에게로 사용 권한을 전환한다. 각 사용자는 자신이 컴퓨터 시스템을 독점하고 있는 것처럼 생각할 수 있다.

터미널은 모니터만 있는 멍텅구리 터미널임. 우체국 뒤쪽에 담당자 있고 그 앞에 컴퓨터 있고, 그 앞에 프론트(?)에 있는 사람들은 걍 모니터만 있음. 본체는 뒤에 있는 사람의 본체에 연결되어 있음(물려있음). 

여기 A잡, B잡, C잡이 있다고 치자. 이 CPU는 일정시간만 처리함. A잡이 CPU로 넘어감-> 처리함-> 안 끝나면 피드백(빠꾸)함. 

이런식으로 하다보면 언젠가 A잡, B잡, C잡이 모두 끝나겠지.

이게 바로 시그널이고, 이걸 굉장히 빨리 돌리면 터미널 A는 CPU를 나 혼자 쓴다고 생각함. 

우리 운영체제도 이 방법을 쓰고 있음. 

 

저 하얀얘 이름이 '큐'인데, 

큐: 주기억 장치에서 질서구조로 동작하게끔 프로그램을 짠거. 먼저 들어온 놈이 먼저 나가는 질서 구조임 -> 선입선출
주기억장치에 큐가 따로 있는게 아니라 프로그램을 그렇게 짠거임. 

5) 다중처리 시스템 (Multi-Processing System)  또는 다중처리 운영체제 (Multi-Processing Operating System)

2개 이상의 처리기로 구성된 시스템을 통합적으로 제어 및 관리한다.

 

6) 실시간 처리 시스템(Real Time Processing System)

즉시처리, 심장박동 조율기, 공항 레이더, 핵물리학 실험, 전화교환장치, 은행의 온라인 업무 등에서 사용됨.
7) 다중모드처리(Multi-Mode Processing)
8) 분산처리 시스템(Distributed Processing System) 또는 분산처리 운영체제(Distributed Processing Operating System)

클라우드랑 비슷함.
9) 임베디드 시스템(Embeded System)
보통 PC가 있고 임베디드가 있음

PC는 범용이고 임베디드는 전용임

PC는 게임, 숙제 머머 등등 가능,

임베디드는 전용이라 밥솥용 컴퓨터, 냉장고용 컴퓨터 이런식으로 딱 필요 기능만  동작하게 만든 컴퓨터(전용 하드웨어+전용 소프트웨어) -> 키보드나 마우스, 상수/ 수학 계산 이딴거 필요 없잖아..


4. 운영체제의 입/출력 방식
가. 입/출력 기능

입력과 출력 인터페이스 기능을 제공함. 
나. 입/출력 버퍼링
1) 버퍼링(Buffering): 주기억장치(RAM)에 저장

내 PC에서 인터넷으로 동영상을 볼 때 동영상 바(Seek Bar Handle)가 색이 바뀐 애들이 있음. 얘네는 내 PC의 램에  있는거임. 이게 왔다 갔다 하면 버퍼링 없이 움직일 수 있는데, 갑자기 현재 보고 있던 바(Playhead)를 옆으로 옮기면 버퍼링이 시작되면서 램에 새로 저장함. 위치는 주기억장치
2) 스풀링(Spooling): 보조기억장치(HDD)에 저장

하드웨어로 디스크의 일부를 스풀링 영역으로 씀. 어디에 쓰냐면 복합기에 스풀된 문서를 먼저 인쇄하냐고 물어봄. 내가 프린터 할 때 책 한권을 프린터하면 굉장히 많은 양이라 주기억장치의 용량을 벗어나겠지. 그럴 때는 하드디스크 드라이버에 이 데이터를 넣음. 그리고 책을 프린팅함. 

3) 버퍼링과 스풀링 비교

  버퍼링 스풀링
구현 버퍼의 위치는 주기억장치 스풀의 위치는 디스크
위치 동영상은 혼자보져
single User
복합기는 같이 쓰지. 사무실에서
Multi User
수행 스택, 큐(리포, 피포) 방식 큐 방식(질서구조)
다중작 한 작업의 입출력과 계산 중복 여러 작업에 입출력과 계산 중복 가능

 

스택 - LIFO(Last In First Out)
먹고 토하기임. 주기억장치에 스택구역이 따로 있는게 아니고 프로그램을 리포로 동작하게끔 짠거임. 먹고 토하게, 라스트 인 -> 나중에 먹은게 먼저 튀어나옴.
기억장치에 넣을 때 명령어는 PUSH임. 
A,B,C,D 순으로 PUSH했다면
D
C
B
A
로 쌓일거고, 이걸 꺼내는 명령어 TOP을 쓰면
가장 마지막에 쌓인 D부터 꺼내져서 
DCBA순으로 나오게 됨. 

 

큐 - FIFO(First In First Out)
선입선출
A,B,C,D 순으로 Enqueue(인큐)했다면
ABCD로 쌓일거고, 이걸 꺼내는 명령어Front(혹은 데큐, Dequeue)를 쓰면
ABCD순으로 나오게 됨. 

 

다. 인터럽트(Interupt)
1) 인터럽트
가) 개념

- 인터럽트는 시스템에 예기치 않은 상황이 발생했을 때, 예를들어 누가 지나가다가 내 PC를 발로 참 ㅠ 순간적으로 쇼트가 생길건데 이 또한 하나의 인터럽트임. 이런 인터럽트가 생기면 운영체제에 알리고 이를 해결하기 위한 매커니즘임.

- CPU는 이것이 발생신호를 받으면 프로그램 카운터 레지스터가 프로그램 카운터의 내용과 프로그램 수행 상태에 관한 모든 정보(레지스터 정보로 문맥 교환을 함)를 저장한 후, 문제의 해결을 위한 처리과정이 기술된 프로그램인 이것의 시작주소를 프로그램 카운터로 옮긴다.  
나) 인터럽트 종류 

결국에 명령어라는 건 순차처리하는 것임. 프로그램이 돌아간다 = 명령어를 순차처리한다. 근데 예를들어 내가 100번째 명령어 처리 중 인터럽트(오류)가 발생함. 그럼 일단 내가 처리하던 100번째 명령어는 일단 처리하고, 그리고 내 CPU안의 각종 레지스터의 상태값을 알단 저장(문맥교환)을 함. 이때 리턴 어드레스(복귀주소)도 어디엔가 저장함.

그리고 이 발생한 인터럽트를 처리해야함 먼저 인터럽트 백터 테이블에서 어떤 것을 처리해야하는지 찾고, 루틴이 크게 인터럽트 처리루틴이 있고 ,인터럽트 서비스 루틴이 있음. (가을이 처서야.. 이걸로 외워..)

인터럽트 처리루틴에서는 다른 프로세서가 인터럽트를 하지 못하게 일단 금지시키고, 각종 프로세서(CPU의 레지스터, 수많은 플립플롭(Flip-Flop)으로 이루어진 1비트 기억 소자)의 값들을 조작함. 

그 다음 원인 파악함 그 다음 실질적인 인터럽트 처리는 서비스 루틴으로 가서 실질적인 인터럽트를 처리하고 복귀(리턴)함. 그리고 아까 저장한 프로세서 상태로 복구함. 그리고 인터럽트 금지한걸 허용으로 바뀜. 그리고 복귀 주소로다가 복귀함.

 

컴퓨터 키보드에서 알트+컨트롤+델 누르면 뭐가 바뀜, 이 또한 인터럽트임.

(1) 외부 인터럽트

내가 키보드에서 컨트롤+알트+델키를 누르는거 같은거임. 

입출력장치(프린터 하다가 종이 걸림), 타이밍소자, 전기 에러 등 피해. 비동기적(예측 불가함)으로 발생함. 

(2) 내부 인터럽트

프로그램과 동기적(어느정도 예측가능)으로 발생

 -> 나눗셈 하는데 3을 0으로 나눈다 -> 논리오류

오버플로우(Overflow)는 메모리의 영역을 침범하는 것
(3) 스프트웨어 인터럽트

슈퍼 바이저 인터럽트