1. 컴퓨터 시스템의 구조
컴퓨터 시스템의 구조
- 내부장치 : CPU, 메모리
- 외부장치 : 디스크, 키보드, 모니터, 네트워크 장치
입출력 장치(Input-Output:I/O)
- 컴퓨터 내부로 데이터가 들어오는 것을 입력(input)
- 컴퓨터 외부로 데이터가 나가는 것을 출력(output)
- 키보드로부터 입력 받아 컴퓨터가 연산 처리 한 후 그 결과를 모니터에 출력하는 경우를 대표적인 입출력이라고 함.
- 따라서 컴퓨터 외부장치를 입출력 장치라고도 부른다.
컨트롤러
- 메모리 및 입출력장치 등의 각 하드웨어 장치에는 컨트롤러라는 것이 있다.
- 컨트롤러는 일종의 작은 CPU를 말한다. 이 CPU가 제어를 함.
- ex) 디스크 컨트롤러, 메모리 컨트롤러
커널
- 여러 프로그램이 동시에 수행되는 시스템을 위한 운영체제
- 프로그램 수행, 부팅부터 수행 → 자원 관리를 위해 항상 메모리에 올라가 있어야함.
- 운영체제의 모든 코드 메모리 상주 → 메모리 낭비
항상 메모리에 올라가 있는 부분은 전체 운영체제 중에서 핵심적인 부분에 한정되며, 이 부분을 커널(kernel)이라고 함.
2. CPU 연산과 I/O 연산
- 입출력 장치들의 I/O 연산은 입출력 컨트롤러 담당
- 컴퓨터 내에서 수행되는 연산 메인 CPU 담당
입출력 장치와 메인 CPU는 동시에 수행 가능.
- 두 가지 일이 다른 곳에서 발생할 때 동시에 수행되는 것이 가능하다.
로컬버퍼
- 장치마다 이를 제어하기 위해 설치된 장치 컨트롤러는 장치로부터 들어오고 나가는 데이터를 임시로 저장하기 위한 메모리를 가진다. → 로컬 버퍼
순서
- 디스크나 키보드 등에서 데이터를 읽는다.
- 로컬 버퍼에 데이터가 임시로 저장된 후 메모리에 전달됨.
- 컨트롤러가 장치에서 로컬버퍼로 읽어오는 일을 한다.
ex) 프로그램 B 수행 중 디스크에서 데이터를 읽어오라는 명령 → 디스크 컨트롤러가 물리적인 디스크에서 내용을 읽어 이를 로컬 버퍼에 저장 → 원하는 데이터를 로컬버퍼가 다 읽어오면 메인 CPU 다음 일 수행
로컬 버퍼에서 일을 끝난 것을 CPU에게 우째 알려줄까?
메인 CPU가 지속적으로 체크하는 것이 아님!!!
- 장치에 있는 컨트롤러 인터럽트 발생 → CPU에게 보고
인터럽트
- 컨트롤러들이 CPU의 서비스가 필요할 때 이를 통보하는 방법
순서
- CPU는 매 시점 메모라에서 명령을 하나씩 읽어서 수행.
- CPU 옆에 인터럽트 라인에서 신호 확인
- 인터럽트 관련 일 처리
키보드 입력 혹은 요청된 디스크 입출력 작업의 완료 등 CPU에 알려줄 필요가 있는 이벤트가 일어난 경우 컨트롤러가 발생시키는 것이다.
3. 인터럽트의 일반적 기능
인터럽트 앞에 예
- 프로그램이 요청한 데이터를 디스크 컨트롤러가 로컬버퍼로 읽음
- 인터럽트 발생
- CPU 인터럽트 인지 → 수행
운영체제 커널
- 인터럽트가 들어왔을 때 해야 할 일이 미리 다 프로그래밍 되어 있다.
- 각종 하드웨어 및 소프트웨어 자원 뿐만 아니라 사용자 프로그램에 필요한 서비스도 제공.
개발자가 미리 프로그래밍 해서 커널 내에 포함시켜둠
ex) 인터럽트 처리루틴
인터럽트 처리루틴
앞에 예
- 디스크 컨트롤러가 인터럽트 발생
- CPU 하던 일 멈추고 인터럽트 발생했을 때 수행하도록 정의된 코드를 찾아 수행.
수행하는 일
- 디스크의 로컬버퍼에 있는 내용을 사용자 프로그램의 메모리로 전달
- 해당 프로그램이 CPU를 할당 받을 경우 다음 명령을 수행할 수 있도록 표시
인터럽트 종류
CPU의 서비스가 필요한 경우, CPU 옆에 있는 인터럽트 라인에 신호를 보내서 인터럽트가 발생했음을 알려주는 것은 동일.
- 하드웨어 인터럽트
- 하드웨어 장치가 CPU의 인터럽트 라인을 세팅
- 소프트웨어 인터럽트
- 소프트웨어가 그 일을 수행함.
인터럽트 벡터
소프트웨어, 하드웨어 인터럽트가 발생하면 CPU는 하던 일을 멈추고 운영체제 커널 내에서 해당 인터럽트 처리를 위해 정의된 코드를 찾게 됨. 할 일을 쉽게 찾아가기 위해서 인터럽트 벡터를 가진다.
→ 인터럽트 벡터란 인터럽트 종류마다 번호를 정해서, 번호에 따라 처리해야 할 코드가 위치한 부분을 가리키고 있는 자료구조를 말함.
실제 처리해야할 코드는 인터럽트 처리루틴(interrupt service routine) 또는 인터럽트 핸들러(interrupt handler) 곳에서 정의된다. 인터럽트 처리 후 돌아갈 위치도 알아야 하니 하던 작업이 무엇이었는지도 저장함. 이 곳을 운영체제가 별도로 가짐.
소프트웨어 인터럽트
- 통상적으로 인터럽트는 하드웨어 인터럽트 의미
- 소프트웨어 인터럽트는 트랩(trap)이라고 많이 불림.
- 2가지가 있다.
- 예외 상황(exception)
- 사용자 프로그램이 0으로 나누는 연산 등 비정상적인 작업을 시도하거나, 자신의 메모리 영역 바깥에 접근하려는 시도 등 권한이 없는 작업을 시도할 때 이에 대한 처리를 위해 발생시키는 인터럽트
- 시스템 콜(system call)
- 사용자 프로그램이 운영체제 내부에 정의된 코드를 실행하고 싶을 때 운영체제에 서비스를 요청하는 방법
- 사용자 프로그램이 정의 되지 않고 운영체제 커널에 있는 코드를 사용자 프로그램이 실행하고자 할 때 인터럽트 라인 세팅을 통해 CPU 제어권을 운영체제로 넘겨 실행함.
- 예외 상황(exception)
→ 시스템 콜이나 예외 상황은 모두 사용자 프로세스로부터 CPU의 제어권이 운영체제에 이양되어 처리됨.
4. 인터럽트 핸들링
- 인터럽트가 발생한 경우에 처리해야 할 일의 절차를 의미.
- 프로그램 A가 실행되고 있을 때 인터럽트가 발생하면 A의 현재 상태를 먼저 저장.
- 현재 상태란 현재 CPU에서 실행 중인 명령의 메모리 주소를 포함해 몇 가지 부가적인 정보들 의미
- CPU에서 명령이 실행될 때에는 CPU 내부에 있는 임시 기억장치인 레지스터에 데이터를 읽거나 쓰면서 작업을 함.
- 이때 인터럽트가 발생해 새로운 명령을 실행하면 기존의 레지스터값들이 지워지게 되므로 CPU 내의 이러한 상태를 저장해야함.
프로세스 제어블록(Process Control Block:PCB)
- 현재 시스템 냄에서 실행되는 프로그램들을 관리하기 위한 프로세스 제어블록이란느 자료구조를 둔다.
- PCB는 각각의 프로그램마다 하나씩 존재하며 해당 프로그램의 어느 부분이 실행 중이었는지를 저장하고 있음.
- 코드의 메모리 주소와 레지스터값, 하드웨어 상태가 저장됨.
운영체제가 직접 CPU를 점유하는 경우는 인터럽트에 의하지 않고는 발생하지 않는다. 그럼에도 불구하고 운영체제는 컴퓨터 시스템 내의 모든 하드웨어 및 소프트웨어 자원을 체계적이고 효율적으로 관리함.
5. 입출력의 구조
입출력이란?
→ 컴퓨터 시스템이 컴퓨터 외부의 입출력 장치들과 데이터를 주고받는 것을 말함.
입출력 방식 2가지
- 동기식 입출력
- 비동기식 입출력
동기식 입출력(synchronous I/O)
→ 어떤 프로그램이 입출력 요청을 했을 때 입출력 작업이 완료된 후에야 그 프로그램이 후속 작업을 수행 할 수 있는 방식.
동기식 입출력에서 CPU는 입출력 연산이 끝날 때까지 인터럽틀르 기다리며 자원을 낭비하게 된다. 한편 CPU의 명령 수행 속도는 빠르지만 입출력 장치에서 데이터를 읽어오는 등의 입출력 연산은 상대적으로 느림. 그럼에도 불구하고 입출력이 완료될 때까지 대기했다가 사용자 프로그램에게 CPU의 제어권을 넘기는 방식은 입출력이 완료될 때까지 CPU가 아무 일도 하지 못하게 하기 때문에 자원의 낭비 초래.
이를 해결하고자
- 프로그램이 입출력을 수행 중인 경우 CPU를 다른 프로그램에게 이양해 CPU가 계속 쉬지 않고 일할 수 있도록 관리한다.
봉쇄 상태
- 운영체제는 프로그램을 몇 가지 상태로 나누고 입출력 중인 프로그램의 경우 봉쇄 상태(blocked state)로 전환시킴. 봉쇄 상태의 프로그램에게는 CPU를 할당하지 않고, CPU 할당 시 곧바로 명령을 수행할 수 있는 프로그램에만 CPU 할당
큐(queue)
입출력이 수행 중일 때 다른 프로그램에게 CPU를 양도하게 되므로 다수의 입출력 연산이 동시에 요청되거나 처리될 수 있다. ex)동일한 파일을 접근할 때
- 동기식 입출력에서 입출력 요청의 동기화를 위해 장치별로 큐를 두어 요청한 순서대로 처리할 수 있도록 한다.
- 큐헤더가 존재하고 각 장치별로 입출력 수행 순서를 지켜 주기 위한 큐를 관리.
- 컨트롤러는 이 순서에 따라 매 시점 하나씩 자신에게 주어진 입출력 작업을 처리함.
정리
동기식 입출력을 요청한 프로그램은 입출력이 완료될 때까지 다음 명령어 수행 못함 → 그동안 CPU 낭비 또한 이 경우 다른 프로그램에게 CPU를 양도하는 방법을 사용하지 않고 입출력 연산이 완료될 때까지 기다린다면, 매 시점 하나의 입출력 연산만이 일어날 수 있다 → CPU 효율적인 사용을 위해 CPU 양도함 → 동시에 다수의 입출력 연산이 일어날 수 있음 → 큐를 두어 요청된 순서대로 처리
속도
- 큐헤더가 존재하고 각 장치별로 입출력 수행 순서를 지켜 주기 위한 큐를 관리.
- 컨트롤러는 이 순서에 따라 매 시점 하나씩 자신에게 주어진 입출력 작업을 처리함.
- CPU의 수행 속도에 비해 컨트롤러의 수행 속도나 장치 자체의 작업 수행 능력은 매우 떨어진다. 그렇기 때문에 입출력이 완료될 때까지 CPU가 아무 일도 못하게 하는 것이 아니라, 입출력과 관련 없는 프로그램을 수행하도록 하고, 요청된 입출력 연산이 완료되면 CPU에게 입출력이 완료되었음을 알려주는 방식으로 진행됨.
- 연산 완료 통보 → 인터럽트를 통해서 수행
- 운영체제 커널은 인터럽트 처리루틴으로 가서 입출력 연산을 끝낸 프로그램이 CPU를 할당 받을 수 있도록 그 프로그램의 상태 봉쇄 상태로부터 해제
비동기식 입출력
- 입출력 연산을 요청한 후에 연산이 끝나기를 기다리는 것이 아니라 CPU의 제어권을 입출력 연산을 호출한 그 프로그램에게 다시 부여하는 방식.
- 어떤 프로그램 → 데이터를 디스크에서 읽어오라는 요청 → 보통 읽어온 결과를 이용 다음 수행 but 그 데이터와 관련 없는 일 수행할 수도 있음 → 그러한 작업을 먼저 수행하고 읽어오는 데이터가 반드시 있어야 수행할 수 있는 일들은 입출력이 완료된 후에 수행. 또한 입출력 요청이 디스크에서 읽어오는 요청이 아니라 디스크에 쓰는 요청이면 쓰기 작업이 완료되기 전에도 다음 명령을 수행할 수 있으므로 비동기식 입출력 사용됨.
동기식 입출력 순서
- 사용자 I/O 요청
- 운영체제의 커널로 CPU의 제어권이 넘어와서 입출력 처리와 관련된 커널의 코드 수행.
- 입출력을 호출한 프로세스의 상태를 봉쇄 상태로 바꾸어 입출력이 완료될 때까지 CPU를 할당 받지 못하도록 한다.
- 입출력 완료
- I/O 컨트롤러가 CPU에게 인터럽트 발생 → 입출력 완료 알림.
- 프로세스의 봉쇄 상태 해제
비동기식 입출력 순서
- CPU의 제어권이 입출력을 요청한 프로세스에게 곧바로 다시 주어짐.
- 입출력 연산이 완료되는 것과 무관하게 처리 가능한 작업부터 처리.
- 입출력 연산이 완료되면 동기식과 마찬가지로 인터럽트를 통해 CPU에게 알림.
- 읽어온 데이터를 필요로 하는 명령 수행할 수 있게 됨.
6. DMA
메모리는 CPU에 의해서만 접근할 수 있는 장치이다.
- CPU 외의 장치가 메모리의 데이터에 접근하기 위해서는 CPU에게 인터럽트를 발생시켜 CPu가 이를 대행하는 식으로만 가능.
메모리 접근 연산이 CPU에 의해서만 이루어질 경우 입출력 장치가 메모리 접근을 원할 때 마다 인터럽트에 의해 CPU의 업무가 방해를 받게 되어 CPU 사용의 효울성이 떨어지는 문제점 발생!
이를 해결하고자
DMA
CPU 이외에 메모리 접근이 가능한 장치를 하다 더 둠. 이것을 DMA(Direct Memory Access)라고 함.
- DMA는 일종의 컨트롤러임
- CPU가 입출력 장치들의 메모리 접근 요청에 의해 자주 인터럽트 당하는 것을 막아주는 역할을 함.
- DMA는 바이트 단위가 아니라 블록이라는 큰 단위로 정보를 메모리로 읽어온 후 CPU에게 인터럽트를 발생시켜 작업 완료를 알려준다.
7. 저장장치의 구조
- 컴퓨터 시스템
- 주기억장치
- 보조기억장치
주기억장치
- 보통 메모리라고 부름
- 휘발성(volatile)의 RAM을 매체로 사용하는 경우가 대부분임.
보조기억장치
- 플래시 메모리, CD, 마그네틱 테이프
- 비휘발성(novolatile)의 마그네틱 디스크를 주로 사용한다.
보조기억장치 용도는 2가지로 구분됨
- 파일시스템
- 전원이 나가도 유지해야 할 정보가 있으면 그것을 파일 형태로 보조기억장치에 저장하게 됨.
- 메모리는 휘발성 매체이기 때문에 비휘발성 매체인 디스크를 파일 시스템용으로 사용하는 것.
- 스왑영역
- 운영체제는 프로그램 수행에 당장 필요한 부분만 메모리에 올려놓고 그렇지 않은 부분은 디스크의 스왑 영역에 내려놓게 됨.
- 디스크에 내려놓는 일을 스왑 아웃(swap out)이라 말함.
- 스왑 아웃된 부분이 필요할 때에는 다시 메모리 영역으로 올라옴.
- 프로그램이 종료도면 삭제하는 메모리의 연장 공간임.
- 하드디스크가 가장 널리 사용됨.
하드디스크
보조 기억장치 중 가장 대표적인 저장매체인 하드디스크에는 여러 개의 마그네틱 원판들이 있다.
- 암(arm)
- 원판에 저장된 데이터를 읽고 쓰는 방식으로 동작.
- 트랙(track)
- 디스크의 원판의 표면.
- 섹터(sector)
- 트랙이 다 모여진 것.
8. 저장장치의 계층 구조
빠른 저장장치부터 느린 저장장치까지 단계적인 계층 구조로 이루어진다.
- 느린 저장 장치
- 가격이 저렴해 대용량 사용 but 접근 속도가 느림.
- 빠른 저장 장치
- 단위 공간당 가격이 높으며, 적은 용량.
당장 필요한 정보는 빠른 저장 장치에 넣어두어 수행 속도를 높이고 그렇지 않은 정보는 상대적인 느린 저장장치에 보관.
계층 구조
- 상위 계층
- 레지스터, 캐시 메모리, 메인 메모리
- 휘발성 저장장치로 구성됨.
- 저장 되는 정보는 전원이 나가면 그 내용이 사라짐.
- 하위 계층
- 마그네틱 디스크, 광디스크, 마그네틱 테이프
- 전원이 나가도 지워지지 않는 비휘발성 저장장치임.
상위 계층
- 상위 저장장치 계층으로 갈수록 접근 속도가 월등히 빠름. but 용량이 작아짐.
- 당장 필요한 정보만을 선별적으로 저장
- 하위에 있는 큰 용량의 저장장치를 가지고 있는 것과 비슷한 성능 효과를 낼 수 있다.
- 적은 용량의 메모리를 사용해서도 큰 용량을 가진 것 처럼 효율적으로 동작하도록 관리할 수 있다.
캐싱 기법
→ 상대적으로 용량이 적은 빠른 저장장치를 이용해 느린 저장장치의 성능을 향상시키는 총제적 기법을 일컫는다.
상대적으로 느린 저장장치에 선별적으로 저장함으로써 두 저장장치 사이의 속도를 완충시킨다.
장점
→ 빠른 저장장치에 빈번히 사용될 정보를 저장하면 필요한 정보를 빠른 저정장치에서 곧바로 찾을 수 있는 경우가 많아져 전체적인 성능이 향상됨.
→ 캐싱 기법을 컴퓨터 시스템 내의 다양한 저장장치 계층에서 활용함으로써 적은 용량의 상위 저장장치만으로도 대부분의 경우 빠른 수행 속도의 성능을 얻어낼 수 있다.
9. 하드웨어의 보안
- 우리가 흔히 사용하는 운영체제는 여러 프로그램이 동시에 수행 가능
- 다중 프로그래밍(multi-programming) 환경
다중 프로그래밍 환경
각 프로그램이 다른 프로그램의 실행을 방해하거나 프로그램 간에 충돌을 일으키는 문제를 막기 위해 하드웨어에 대한 각종 보안 기법 필요.
하드웨어적인 보안 유지
운영체에서 기본적으로 두가지
- 커널모드(kernel mode)
- 중요한 정보에 접근해 위험한 상황을 초래할 수 있는 연산하도록 하여 일반 사용자 프로그램이 직접 위험한 명령 수행 못하게 함.
- 사용자모드(user mode)
- 일반적인 연산만 사용자 모드에서 사용자 프로그램이 수행하도록 통제
커널모드
- 운영체제가 CPU 제어권 획득하여 운영체제 코드를 실행하는 모드.
- 모든 종류의 명령을 다 실행 가능.
사용자모드
- 일반 사용자 프로그램이 실행되며 제한적인 명령만 수행 가능.
중요한 연산 커널모드에서만 가능하게 하여 하드웨어 보안 유지
but
사용자 프로그램이 중요 연산을 수행해버리면 제어가 아무 소용이 없음.
사용자 프로그램이 CPU를 가지고 있는 동안에는 운영체제가 자신의 코드를 실행하지 못하므로 사용자 프로그램을 감시 못함…
하드웨어적인 지원 필요
모드비트(mode bit)
→ 컴퓨터 시스템은 CPU 내부에 모드비트를 두어 사용자 프로그램을 감시하게 됨.
- 모드비트 0세팅
- 커널모드로서 모든 명령을 수행 가능
- 모드비트 1세팅
- 사용자모드로서 제한된 명령만 수행 가능.
CPU는 보안과 관련된 명령을 수행하기 전에는 항상 모드 비트를 조사해 그 값이 0으로 세팅된 경우에만 그 명령을 수행.
보안이 필요한 중요한 명령을 수행해야 할 경우 → 시스템 콜을 통해 운영체제가 대신해줄 것 요청 → CPU 제어권 다시 운영체제한테 감. → 인터럽트 발생할 떼 모드비트는 자동으로 0 세팅 → 작업 끝 → 모드비트 다시 1로 세팅 → 사용자 프로그램에게 CPU 넘겨줌
특권 명령
시스템 보안과 관련된 명령들을 특권 명령이라 하며, 특권 명령은 모드비트가 0일 때에만 수행 가능. 커널모드에서 운영체제에 의해서만 수행 가능.
각종 하드웨어 장치에서 보안 유지되는 방식
→ 사용자 프로그램이 디스크에 저장된 파일에 자유롭게 가능하다면 보안상 문제 발생.
ex) 다른 사람의 파일 접근
- 모든 입출력 명령은 특권명령으로 규정해서 사용자 프로그램이 직접 입출력 하는 것을 차단한다.
- 입출력이 필요하게 되면 운영체제에 요청 → 운영체제 입출력 명령을 대신 수행.
입출력은 특권명령이라 모드비트가 0일 때에만 수행 가능. 사용자 프로그램이 입출력을 하고 싶으면 시스템 콜로 운영체제한테 요청해야함.
운영체제 CPU 할당 → 인터럽트 벡터 → 인터럽트 처리루틴 → 인터럽트 하드웨어에 의해 모드비트 0으로 세팅 → 운영체제는 입출력 요청이 올바른지 확인 후 입출력 실행(파일에 대한 보안 유지) → 입출력 완료 → CPU 제어권 사용자 프로그램에게 넘김 → 시스템 콜 이후의 명령 수행 가능.
10. 메모리 보안
여러 프로그램이 메모리에 동시에 올라가서 실행되기 때문에 하나의 사용자 프로그램이 다른 사용자 프로그램이나 운영체제가 위치한 메모리 영역 침범할 수 있음.
ex)c언어- 운영체제 커널이 위치한 영역을 참조하려고 할 수 있음.
인터럽트 벡터, 인터럽트 처리루틴이 있는 곳 각별한 보안 필요.
처리루틴을 접근하거나 변경할 수 있을 경우 운영체제만 수행할 수 있는 특권명령을 보안성이 침해되는 이상한 명령으로 변형할 수 있음.
이것을 막기위해 나온 2가지
- 메모리접근 연산을 할 때 마다 하드웨어적으로 현재 접근하려는 위치가 합법적인 범위에 있는지 체크
- 기준 레지스터 + 한계 레지스터
- 기준 레지스터 + 한계 레지스터아 아닌 범위에 가면 예외상황이라는 소프트웨어 인터럽트 발생시켜 CPU의 제어권을 해당 프로그램부터 운영체제로 이양.
- 운영체제는 예외발생을 시킨 프로그램 강제 종료.
- 기준 레지스터 + 한계 레지스터
- 앞서 말한 기법은 하나의 프로그램이 단순화된 메모리 관리 기법임.
메모리 접근 연산
- 사용자 프로그램이 CPU를 가지고 있는 동안 수행할 수 있는 연산이므로 특권명령 x.
- 입출력 연산과 메모리 접근 연산 차이점임.
사용자모드
→ 기준 레지스터와 한계 레지스터 사용하여 메모리 보호
커널모드
→ 메모리에 무제한 접근 가능
메모리 접근 명령은 특권명령이 아니지만 메모리 접근 연산은 특권명령임.
11. CPU 보안
일반적으로 CPU는 하나임
→특정 프로그램이 CPU 독점할 수 있음
막기 위해
타이머(timer)
- CPU가 하나의 프로그램에 의해 독점되는 것을 막기 위해 운영 체제는 타이머(timer)라는 하드웨어를 사용함.
작동 순서
타이머 → 정해진 시간 지남 → 인터럽트 발생 → 운영체제가 CPU의 제어권 획득할 수 있는 역할
인터럽트 처리루틴 (인터럽트 발생)
- CPU를 점유하고 명령을 실행 중인 프로그램으로부터 CPU 빼앗아 다른 프로그램에게 CPU 이양.
타이머 일정 시간
- 클럭 틱(clock tick) 때 마다 1씩 감소
- 타이머가 0이 되는 순간 인터럽트 발생
타이머 값 설정
- 타이머 값을 세팅하는 명령어는 로드 타이머(load timer)이라 하며, 특권명령에 속함.
타이머는 시분할 시스템에서 현재 시간을 계산하기 위해서도 사용됨.
12. 시스템 콜을 이용한 입출력 수행
사용자 프로그램이 디스크의 파일에 데이터를 쓰거나 디스크의 파일로 부터 데이터를 읽어오는 행위, 키보드로부터 입력을 받거나 수행 결과를 화면에 출력하는 행위
→ 모두 특권명령인 입출력 명령에 해당하여 사용자 프로그램이 직접 수행 불가능.
입출력 명령 → 운영체제 코드에 구현되어 있음.
사용자 프로그램은 직접 입출력을 수행하는 대신 운영체제에서 시스템 콜이라는 서비스 대행 요청을 하여 입출력 수행
시스템 콜
- 일종의 소프트웨어적인 인터럽트임
- 사용자 프로그램이 시스템 콜을 할 경우 → 트랩 발생 → CPU의 제어권 운영체제로 넘어감
- 운영체제는 시스템 콜 처리를 위해 루틴으로 넘어가 정의된 명령 수행.
참고 블로그
[운영체제와 정보기술의 원리] 03장. 컴퓨터 시스템의 동작 원리
'OS > OS-42study' 카테고리의 다른 글
6. CPU 스케줄링 (0) | 2023.09.13 |
---|---|
5. 프로세스 관리 (0) | 2023.09.13 |
4. 프로그램의 구조와 실행 (0) | 2023.09.13 |
2. 운영체제의 개요 (3) | 2023.05.09 |