3 컴퓨터 시스템의 동작 원리
3 컴퓨터 시스템의 동작 원리
1 컴퓨터 시스템의 구조
- 내부장치 : CPU, 메모리
- 외부장치(입출력장치) : 디스크, 모니터, 네트워크장치, 마우스, 키보드 등..
- 각 하드웨어 장치의 컨트롤러가 장치를 제어(작은 cpu)
- 운영체제: 여러 프로그램이 동시에 수행되는 시스템, 수행을 위해선 메모리에 올라가 있어야 한다.
- kernel(커널) 항상 메모리에 올라가 있는 핵심부분
2 CPU 연산과 I/O 연산
- CPU 연산 : 컴퓨터 내에서 수행되는 연산
- I/O 연산 : 입출력 장치의 컨트롤러에서 담당
- 로컬버퍼(입출력 장치의 데이터 임시 저장 메모리)
- interupt : CPU는 매 명령을 수행할때마다 interupt 라인에 신호가 들어왔는지 확인하고 이를 통해 입출력 장치의 보고를 알 수 있게 된다. (ex_입출력 장치의 작업이 끝나면 인터럽트 발생시킴)
3 인터럽트의 일반적 기능
- 인터럽트 처리 루틴 or 인터럽트 핸들러: 운영체제 커널 내에 있는 다양한 인터럽트에 대해 각각 처리해야할 업무들을 정의해 놓은 코드
- 하드웨어 인터럽트
- 컨트롤러 등 하드웨어 장치가 CPU의 인터럽트 라인을 세팅
- 인터럽트 벡터(interrupt vector): 인터럽트 종류마다 번호를 정해 번호에 따라 처리해야 할 코드가 위치한 부분을 가리키고 있는 자료구조
- 컨트롤러 등 하드웨어 장치가 CPU의 인터럽트 라인을 세팅
- 소프트웨어 인터럽트(트랩
) - 사용자 프로세스로부터 CPU의 제어권이 운영체제에 이양되어 처리되는데, 이 과정에서 프로그램 코드가 직접 인터럽트 라인을 세팅하는 명령을 실행하여 인터럽트를 발생시킨 후 제어권이 넘어가게 된다.
- Exception (예외상황): 사용자 프로그램이 비정상적인 작업을 시도하거나, 권한이 없는 작업을 시도할 때 이에 대한 처리를 위해 발생시키는 인터럽트
- System call (시스탬 콜): 사용자 프로그램이 운영체제 내부에 정의된 코드(커널모드 _ I/O 등)를 실행하고 싶을 때 운영체제에 서비스를 요청하는 방법 출처
4 인터럽트 핸들링
- 인터럽트 핸들링(interrupt handling): 인터럽트가 발생한 경우에 처리해야 할 일의 절차
- 프로세스 제어 블록 (Process Control Block:PCB)
- 각 프로그램마다 하나 씩 존재하며, 해당 프로그램의 어는 부분이 실행중이었는지 저장
- 실행중인 코드의 메모리 주소, 레지스터 값, 하드웨어 상태 등
** 운영체제는 인터럽트가 발생할 때에만 실행되는 것으로 봐도 무방하게 사용된다. (보통 CPU 제어권을 인터럽트 발생시에만 획득 가능)
5 입출력 구조
- 컴퓨터 시스템이 컴퓨터의 입축력 장치들과 데이터를 주고 받는 것
- 동기식 입출력 (synchronous I/O)
- 이전 입출럭 작업이 완료된 후에야 후속 작업을 수행할 수 있는 방식
- 입출력이 진행되는 동안 그 프로그램의 다음 명령을 수행하지 않고 기다린다.
- 자원 낭비가 클 수 있다
- 입출력이 진행되는 동안 봉쇄상태(block state)로 전홤 수 다른 프로그램에게 CPU할당, 입출력 완료 후 컨트롤러가 다시 CPU에 인터럽트
- 입출력 요청의 동기화를 위해 장치별로 Queue를 두어 요청한 순서대로 처리할 수 있도록 한다.
-
비동기식 입출력(asynchronous I/O)
- 입출력 연산 요청 후 CPU 제어권을 입출력 연산을 호출한 프로그램에게 곧바로 부여하는 방식
- 입출력 데이터와 관련없이 수행 가능한 일들을 먼저 수행하고, 입출력 완료된 이후 해당 데이터가 필요한 일들을 수행 (ex_) 디스크에 쓰는 입출력 요청인 경우, 작업 완료 전에도 다른 명령 수행이 가능해 비동기식 입출력 사용 가능
- 입출력 연산 완료 후에는 동기식과 동일하게 CPU에게 인터럽트를 통해 알려준다.
6 DMA (Direct Memory Access)
- 인터럽트로 인한 CPU 사용의 비효율성을 극복하기 위해 로컬버퍼에서 메모리로 읽어오는 작업을 대행
- 블록(block)이라는 큰 단위로 정보를 메모리로 읽어온 후 CPU에게 인터럽트
- CPU에 발생하는 인터럽트의 빈도를 줄여 좀 더 효율적으로 관리하고 입출력 연산을 빠르게 수행 상세 내용 참고
7 저장장치의 구조
- 주기억장치(메모리)
- 휘발성(volatile)의 RAM을 매체로 주로 사용
-
보조기억장치
-
비휘발성(nonvolatile)의 마그네틱 디스크를 주로 사용
- 플래시 메모리, CD, 마그네틱 테이프 등도 사용
종류
1) 파일 시스템(file system)
전원이 나가도 유지해야 할 정보를 파일형태로 보조기억장치에 저장
2) 메모리 연장 공간인 스왑 영역(swap area)
프로그램이 실행될 때 내용을 저장했다 프로그램이 종료될 때 삭제하는 메모리 연장 공간
- 프로그램에 당장 필요한 부분만 메모리에 올리고 그렇지 않은 부분은 디스크의 스왑 영역에 내려놓는다. (swap out)
8 저장장치의 계층 구조
- 빠른 저장 장치 > 느린 저장장치 의 단계적인 계층 구조로 구성
- 휘발성( 레지스터 → 캐시 메모리 → 메인 메모리 )→ 비휘발성
- 빠른 저장 장치
- 단위 공간당 가격 높음 → 적은 용량 사용
- 느린 저장 장치
- 가격 저렴 → 대용량사용
- 접근 속도가 느리다.
- 캐싱 기법
- 상대적으로 느린 저장장치에 있는 내용 중 당장 사용되거나 빈번히 사용될 정보를 빠른 저장장치에 선별적으로 저장함으로서 두 저장장치 사이의 속도를 완충하는 기법
9 하드웨어의 보안
- 커널 모드(kernel mode, system mode)
- 운영체제가 CPU의 제어권을 가지고 운영체제 코드를 실행하는 모드
- 모든 종류의 명령 다 실행 가능
- 사용자 모드(user mode)
- 일반 사용자 프로그램이 실행
- 제한적인 명령만 수행
- 모드비트(mode bit)
- 운영체제만 수행 가능하도록 정의해 놓은 연산을 사용자 프로그램 내에서 수행하는 것을 방지하기 위한 하드웨어적 지원
- 0: 커널모드 / 1: 사용자 모드
- CPU는 보안과 관련된 명령 수행 전 항상 모드비트를 조사해 0으로 세팅된 경우에만 명령 수행
- 사용자 프로그램에게 CPU제어권 넘길 때 모드비트 1로 세팅
- 인터럽트 발생 시 모드비트 자동으로 0 세팅, 끝난 후 1
- 특권명령: 시스템의 보안과 관련된 명령들로, 모드비트가 0일때만 수행할 수 있다. 즉, 운영체제에 의해서만 수행 가능하다.
- 모든 입출력 명령은 특권명령으로 규정해서 사용자 프로그램이 직접 입출력하는 것을 차단한다.
10 메모리 보안
- 사용자 프로그램이 다른 사용자 프로그램이나 운영체제가 위치한 메모리 영역을 침범할 수 있다 (인터럽트 벡터와 인터럽트 처리루틴이 있는 곳은 각별한 보안 필요)
- 2개의 레지스터를 사용하여 메모리 보호
- 기준 레지스터(base register)
- 프로그램이 합법적으로 접근할 수 있는 메모리상의 가장 작은 주소
- 한계 레지스터(limit register)
- 기준 레지스터값부터 접근할 수 있는 메모리의 범위
- 범위 외의 메모리 접근시 예외 상황(소프트웨어 인터럽트) 발생
- 운영체제에 소프트웨어 인터럽트를 발생시켜 CPU의 제어권을 해당 프로그램으로부터 운영체제로 이양시키고, 운영체제는 예외상황을 발생시킨 프로그램을 강제 종료.
11 CPU 보호
- 타이머(timer)
- CPU가 하나의 프로그램에 의해 독점되는 것을 막기위해 운영체제가 사용하는 하드웨어
- 정해진 시간이 지나면 인터럽트를 발생시켜 운영체제가 CPU 제어권을 획득할 수 있도록 한다.
- 로드 타이머(load timer): 타이머 값을 세팅하는 명령으로, 특권 명령에 속한다.
- 시분할 시스템에서 현재 시간 계산을 위해서도 사용
12 시스템 콜을 이용한 입출력 수행
- 입출력 명령은 특권명령이기 때문에 사용자 프로그램은 운영체제에 시스템 콜을 요청하여 입출력을 수행한다.
- 시스템 콜: 일종의 소프트웨어적 인터럽트로서 사용자 프로그램이 시스템 콜을 할 경우 트랩이 발생해 CPU의 제어권이 운영체제로 넘어간다.
- 운영체제는 해당 시스템콜을 처리하기 위한 루틴으로 가 해당 명령을 수행
Leave a comment