본문 바로가기
Infra/운영체제

3. 컴퓨터 시스템

by hongdor 2021. 10. 15.
728x90

운영체제와 정보기술의 원리 책 요약 정리

 

 

1. 컴퓨터 시스템의 구조

외부장치에서 내부장치로 데이터를 읽어와 연산 후 외부로 출력한다.

각종 자원 및 장치들을 관리하는 프로그램은 부팅과 함께 메모리에 올라간다.

운영체제 프로그램이라고 해서 메모리에 항상 올라가 있는 것은 아니다.

항상 메모리에 올라가 있는 핵심 부분은 커널이라고 부른다.

 

 

2. CPU 연산 I/O 연산

입력 시 입력 장치의 컨트롤러(장치의 cpu)에서 연산 후 입력 장치의 메모리(로컬 버퍼)에 쌓는다.

입력 장치가 인터럽트를 발생시켜 cpu가 프로그램을 실행하는 것을 멈추고 입력 관련 로직을 처리한다.

 

 

3. 인터럽트의 일반적 기능

인터럽트에 의해 행해질 일들은 커널에 미리 포함되어 있다.

 

 

소프트웨어 인터럽트 : 에외상황(exception)과 시스템 콜(system call)

- 예외 상황 : 0으로 나누는 연산 등 비정상적인 작업 시도, 메모리 바깥 접근 시도 등

- 시스템 콜 : 사용자 프로그램이 운영체제 내부에 정의된 코드를 실행하고자 할 때

 

하드웨어 인터럽트 : 컨트롤러 등에서 보낸 신호가 CPU 옆 인터럽트 라인을 통해 물리적으로 신호가 들어옴.

 

 

4. 인터럽트 핸들링

인터럽트가 발생하면

1) CPU에서 처리중인 프로그램의 현재 상태 저장(메모리 주소, 레지스터값, 하드웨어 상태 등)

2) 인터럽트 처리

3) 기존의 프로그램 이어서 실행

 

 

5. 입출력 구조

 

동기식 입출력 

1) A프로그램 실행 도중 데이터 필요. 장치로부터 데이터를 읽어오는 시스템 콜 실행

2) CPU에게 소프트웨어 인터럽트 발생 

3) CPU가 프로그램 A의 코드 실행을 멈춤

4) 저장 장치의 컨트롤러에게 요청

5) 프로그램 A의 코드는 봉쇄 상태가 됨(진행불가)

6) 프로그램 B 실행

7) 컨트롤러가 완료됐다는 하드웨어 인터럽트를 CPU에게 발생시킴

8) CPU가 인터럽트 관련 로직 처리(장치의 로컬 버퍼에서 메모리로 옮김)

9) A 봉쇄 상태 해제

10) 프로그램 B 완료 후 프로그램 A 나머지 처리

 

비동기식 입출력

1) A프로그램 실행 도중 데이터 필요. 장치로부터 데이터를 읽어오는 시스템 콜 실행

2) CPU에게 소프트웨어 인터럽트 발생 

3) CPU가 프로그램 A의 코드 실행을 멈춤

4) 저장 장치의 컨트롤러에게 요청

5) 프로그램 A에서 데이터와 관련 없이 수행할 수 있는 것들 실행

6) 컨트롤러가 완료됐다는 하드웨어 인터럽트를 CPU에게 발생시킴

7) CPU가 인터럽트 관련 로직 처리(장치의 로컬 버퍼에서 메모리로 옮김)

8) 프로그램 A에서 데이터가 필요했던 곳부터 처리

 

 

6. DMA

Direct Memory Access. CPU와 장치들 사이에 존재하는 일종의 컨트롤러로써 장치들의 메모리 접근 요청을 대신 처리해주어 CPU의 인터럽트 빈도 수를 낮춰준다.

 

 

7. 저장장치

주기억장치 : 휘발성

보조 기억 장치 : 비휘발성

 

보조기억장치 용도

1) 파일 시스템 저장.

2) 스왑 영역 - 당장 필요한 부분은 메모리에 올려놓고 나머지를 스왑영역에 내려 놓는다. 

 

 

8. 저장장치의 계층 구조

빠를수록 비싸기 때문에 용량이 적다.

주기억장치에서 레지스터 - 캐시 메모리 - 메인메모리 순으로 속도가 낮다.

캐시 메모리는 사용빈도가 높은 정보를 저장 해두어 큰 속도 향상을 볼 수 있다.

이러한 캐싱 기법을 컴퓨터 시스템 내의 다양한 저장장치 계층에서 활용하여 속도를 높인다.

 

 

9. 하드웨어 보안

커널 모드 : 위험한 연산 등 모든 명령 수행 가능

사용자 모드 : 제한적인 명령 수행 가능

 

모드비트 : 하드웨어적으로 사용자 모드 시 1로 세팅되어 제한된 명령만 수행 가능하다.

              커널 모드 시 0으로 세팅되어 특권 명령도 수행 가능.

              소프트웨어적으로는 한계가 있기에 하드웨어 도움을 받는다.

 

입출력 하드웨어 보안

모든 입출력 명령은 특권명령으로 규정된다.

디스크의 모든 파일에 접근 할 수 있다면 보안 문제가 발생할 수 있다.

입출력 필요할 때는 시스템콜로 운영체제에 요청한다

운영체제가 CPU를 할당받고 모드비트가 0이 세팅 되어 요청을 실행한다.

한편 운영체제는 입출력 요청이 올바른 요청인지 확인한 후 입출력을 실행하여 보안을 유지한다.

완료 되면 CPU의 제어권을 다시 사용자 프로그램에 반환한다.

 

 

10. 메모리 보안

기준 레지스터와 한계 레지스터를 통해 프로그램의 메모리 침범을 막는다.

A라는 프로그램이 메모리의 20000~35000 주소에 올려져 있다면

기준 레지스터는 20000, 한계 레지스터는 15000 으로 세팅된다. 이 값 사이의 메모리만 참조할 수 있다.

물론 연속적으로 위치하는 단순한 메모리일 경우를 예시로 들었다. 

기준 레지스터와 한계 레지스터의 값을 세팅하는 연산은 운영체제만 할 수 있는 특권명령이다.

 

 

11. CPU 보호

CPU가 무한 반복문을 수행하는 등의 문제 보호

타이머(timer)라는 하드웨어로 정해진 시간이 지나면 인터럽트를 발생시켜 운영체제가 CPU의 제어권을 흭득할 수 있도록 한다.

타이머는 정해진 값에서 매 클럭 틱 마다 1씩 감소하고, 0이 되면 인터럽트를 발생시킨다.

타이머 값을 세팅하는 명령을 로드 타이머(load timer)라고 하며 특권명령이다. 

한편 타이머는 시분할 시스템에서 현재 시간을 계산하기 위해서도 사용된다.

 

 

12. 시스템 콜을 이용한 입출력 수행

사용자 프로그램이 디스크의 파일에 데이터를 읽고 쓰거나, 키보드로부터 입력을 받거나 수행 결과를 화면에 출력하는 행위 등은 모두 특권명령이다.

이러한 입출력 명령은 운영체제 코드에 구현되어 있으며, 사용자 프로그램은 시스템콜을 통해 운영체제에 서비스 대행 요청을 한다.

 

 

728x90

'Infra > 운영체제' 카테고리의 다른 글

5. 프로세스 관리  (0) 2021.10.18
4. 프로그램의 구조와 실행  (0) 2021.10.18
2. 운영체제의 개요  (0) 2021.10.15
1. 컴퓨터 및 정보기술의 역사  (0) 2021.10.15

댓글