(운영체제와 정보 기술의 원리)3장. 컴퓨터 시스템의 동작 원리
3장. 컴퓨터 시스템의 동작 원리
컴퓨터 시스템의 구조
내부장치 : CPU, 메모리
외부장치 : 디스크, 키보드, 마우스, 모니터, 네트워크 장치 등
컨트롤러 : 하드웨어 장치를 제어하기 위한 작은 CPU
CPU 연산과 I/O 연산
로컬버퍼: 장치로 부터 오고가는 데이터를 임시로 저장하기 위한 입출력장치들의 메모리
입출력장치는 CPU 연산이 필요할 때 컨트롤러를 통해서 인터럽트를 발생시켜 CPU에 보고하게되고 CPU는 작업중 인터럽트가 들어오면 인터럽트를 처리한 후 하던 작업으로 되돌아가게 된다.
인터럽트의 일반적 기능
인터럽트 : 각 장치들의 컨트롤러가 CPU서비스가 필요할 때 통보(장치입장에서는 허락을 구함, CPU입장에서는 방해를 받음)
하드 인터럽트 : 컨트롤러가 발생시키는 인터럽트 소프트 인터럽트(트랩) : 시스템콜(프로그램이 운영체제 정의된 코드를 사용하고 싶을 때 발생시킴), 예외상황(에러사항)
인터럽트 벡터 : OS에는 다양한 인터럽트에 대해서 각각 다르 처리루틴이 프로그램되어 있는데 이러한 것을 찾기위한 인덱스 값이라고 생각됨
인터럽트 핸들링
인터럽트 발생시 처리해야 할 일의 절차를 인터럽트 핸들링이라고 함.
PCB(프로세스 제어 블록) : CPU에서 명령이 실행될 때에는 CPU 내부에 있는 임시 기억장치인 레지스터에 데이터를 읽거나 쓰면서 작업을 하는데, 인터럽트가 발생해 새로운 명령을 실행하게 되면 레지스터 값들이 지워지게 됨 따라서 CPU 내의 상태를 저장해두기 위해 운영체제 안에 PCB라는 자료구조를 둠. 프로그램마다 하나씩 존재하며 프로그램의 어느 부분이 실행 중이었는지 저장
EX) 프로그램 A 인터럽트 > CPU 처리하던 상태를 PCB에 저장 > 인터럽트 처리 > PCB에 저장된 정보를 바탕으로 다시 하던 작업 복귀
입출력 구조
동기식 입출력 : 입출력 요청시 요청된 작업이 완료되어야 후속 작업을 수행할 수 있는 방식
CPU는 입출력 연산이 끝날 때 까지 인터럽트를 기다리며 자원을 낭비하게 됨
이를 해결하고자 일반적으로 프로그램이 입출력을 수행중인 경우 CPU를 다른 프로그램에 이양해서 계속 돌아가게 만듬 이 때 입출력 중인 프로그램은 봉쇄 상태로 전환됨
비동기식 입출력 : 입출력 연산이 끝나기를 기다리지 않고 CPU의 제어권을 입출력 연산을 호출한 프로그램에게 곧바로 다시 부여하는 방식
- 동기식 입출력 구조에서 CPU를 계속 쓰기 위해 다른 프로그램에게 제어권을 이양했다면 비동기식 입출력 구조는 인터럽트를 발생시킨 프로그램에게 다시 제어권을 넘겨주어 할 수 있는 처리부터 CPU를 활용하게 하는 것 같음
DMA
- 원칙적으로 메모리는 CPU에 의해서만 접근할 수 있는 장치. 하지만 다른 입출력 장치들이 메모리에 접근하려고 할때마다 CPU에 인터럽트를 발생시키면 CPU작업이 계속 방해되어 효율성이 떨어짐 이를 해결하기 위해 만든 장치를 DMA(Direct Memory Access)라고 함
저장 장치의 구조
주기억 장치 (RAM) : 메모리라고 부르며 전원이 나가면 내용이 모두 사라져버리는 휘발성 저장장치
보조기억 장치 : 전원이 나가도 내용을 기억하는 비휘발성 저장장치
파일 시스템용 : 유지해야할 정보가 있을 때 파일 형태로 저장하기 위해 존재 스왑 영역용 : 메모리의 연장 공간인 스왑 영역(당장 필요하지 않은 부분을 메모리가 아닌 보조장치에 저장하는 공간)으로 사용하기 위해
저장 장치의 계층 구조
레지스터 - 캐시 메모리 - 메인 메모리 - 마그네틱 디스크 - 광디스크 - 마그네틱 테이프 순으로 속도가 빠름
레지스터, 캐시 메모리, 메인 메모리는 휘발성 저장장치이며 나머지는 비휘발성 저장장치이다.
캐싱 기법 : 상대적으로 느린 저장장치에 있는 내용 중 당장 사용되거나 빈번히 사용될 정보를 빠른 저장장치에 선별적으로 저장함으로써 두 저장장치의 속도를 완충하는 기법.
EX)반복적인 코드는 빠른 저장장치에 올리고 아닌 것은 느린 곳에 올려 실행 속도를 향상 시킬 수 있음
하드웨어의 보안
- 커널 모드: 운영체제가 CPU의 제어권을 가지고 운영체제 코드를 실행하는 모드
- 중요한 정보에 접근해 위험한 상황을 초래할 수 있는 연산은 커널모드에서만 실행되도록 하여 일반 사용자 프로그램이 직접 위험한 명령을 수행할 수 없도록 함.
사용자 모드: 일반 사용자 프로그램이 실행되며 제한적인 명령만 수행할 수 있는 모드
모드비트 : 사용자 프로그램이 CPU를 가지고 있는동안 사용자 프로그램이 중요한 연산을 수행할 가능성을 막기 위해 만든 CPU 내부에 만든 장치
모드비트가 0으로 세팅 되어있으면 커널모드, 1이면 사용자 모드
CPU는 명령을 수행하기 전에 모드비트 값을 보고 그에 해당하는 권한을 부여
인터럽트 발생시 자동으로 모드비트는 0으로 세팅, 작업 후 모드비트를 1로 만들어 사용자 프로그램에게 CPU이양
메모리 보안
기준 레지스터: 합벅적 접근이 가능한 메모리상 가장 작은 주소 (프로그램 실행될 메모리의 위치 주소를 말하는 듯)
한계 레지스터: 기준 메모리 주소 부터 어느 영역의 메모리 범위까지 접근할 지를 정해주는 수치
CPU 보호
CPU는 컴퓨터 시스테 내에 하나밖에 존재하지 않음으로 특정 프로그램이 CPU를 독점해 사용해 버리면 다른 프로그램이 CPU를 할당 받을 수 없게됨
타이머: 특정 프로그램이 CPU를 독점할 수없게 프로그램이 CPU를 쓸 수 있는 시간을 정해주는 장치
- 지정된 시간이 지나면 타이머는 인터럽트를 발생시켜 시간을 초과한 프로그램의 CPU제어권을 박탈한다.