1. 프로그램의 구조와 인터럽트
프로그램이 CPU에서 명령을 수행하려면, 명령을 담은 프로그램의 주소 영역이 메모리에 올라가 있어야 한다.
프로그램이 메모리에 올라가 있다 -> 프로그램이 실행 중 이다. ▶▶ 이를 프로세스라고 한다.
프로그램의 주소 영역 (프로세스 주소 공간)
코드 | 작성한 프로그램 함수들이 CPU에서 수행이 가능하도록 기계어 명령(machine instruction) 형태로 변환되어 저장하는 곳 |
데이터 | 전역 변수 (global variable) 등 프로그램이 사용하는 데이터를 저장하는 곳 |
스택 | 호출된 함수가 실행되고 나면 돌아가야한 주소 및 데이터를 임시로 저장하는 곳 |
- 함수1을 수행 중 함수 2 호출 -> 스택에 함수 1에서 함수 2를 호출한 지점을 저장- > 함수 2 수행 끝 -> 스택에 저장된 주소를 참고하여 함수 1로 복귀
위의 방식으로 프로그램에 있는 함수들이 순차적으로 실행된다.
이와 같이 인터럽트도 함수 호출과 비슷하다.
- 프로그램 A 수행 중 인터럽트 발생 -> 프로그램 A가 현재 수행 중인 위치 저장(스택) -> 인터럽트 처리 완료 -> 프로그램 A가 중단 된부분 부터 시작
2. 컴퓨터 시스템의 작동 개요
CPU 는 스스로 어떤 작업을 수행해야하는 결정을 하지 못한다.
-> 프로그램 카운터(program counter: PC) 가 존재 = CPU가 수행해야할 메모리 주소를 담고 있는 레지스터
CPU가 수행 하는 명령
- 일반명령 : 모든 프로그램에서 실행가능
- 특권명령 : 보안이 필요한 명령, 운영체제에서만 가능
- 사용자 프로그램에서 CPU 도움이 필요한 경우 인터럽트를 사용해 서비스 요청
3. 프로그램의 실행
프로그램 실행의 의미
1)디스크에 존재하던 실행파일이 메모리에 적재되었다.
2) 프로그램이 CPU를 할당 받고 명령을 수행하고 있는 상태이다.
운영방식
프로그램의 주소 공간 중 당장 CPU의 수행에 필요한 부분은 메모리에 올려두고
그렇지 않은 부분은 디스크 중 메모리의 연장 곤간으로 사용되는 스왑 영역에 내려 놓는 방식
프로그램마다 독자적으로 존재하는 주소공간을
가상메모리(virtual memory) 혹은 논리적메모리(logical meemory)라고 한다.
> 운영체제도 프로그램처럼 코드, 데이터, 스택이란 주소 공간을 가진다. 즉, 운영체제도 하나의 프로그램
(운영체제의 주소 공간 구조에 대한 설명 추가 필요)
4. 사용자 프로그램이 사용하는 함수
3가지 함수
- 사용자 정의함수 : 프로그래머 자신이 작성해 놓은 함수
- 라이블러리 함수 : 다른 프로그래머가 작성해 놓은 함수를 호출
- printf () : 하지만 함수 내에서 입출력을 담당하는 커널 함수를 호출
- 커널 함수 : 운영체제 커널의 주소 공간에 정의 된 함수 ( 시스템 콜 함수, 인터럽트 처리 함수)
- 시스템 콜 함수 : read(), write(),
5. 인터럽트
인터럽트는 사용자 프로그램이 CPU의 도움이 필요할 때 시스템 콜이라는 서비스를 요청해서 도움을 받는다.
만약 인터럽트 처리 중에 또 다른 인터럽트가 생긴다면?
- 데이터의 일관성을 유지하기 위해서 원칙은 허용하지 않는다.
- 하지만. 인터럽트마다 중요도가 다르므로 중요도가 더 높은 인터럽트가 발생시 예외적으로 허용
6. 시스템 콜
시스템 콜 이란
- 자신의 주소 공간을 거르는 영역에 존재하는 함수를 호출하는 것을 말함
- 자신의 프로그램에 있는 함수가 아닌, 커널에 있는 함수를 호출하는 것을 말함
특징? 특이사항?
- 자신의 공간에서 함수를 호출 못한다.
- 주소공간 자체가 다른 곳으로 이동한다.
- 자신이 인터럽트 라인을 세팅한다.
디스크의 파일 입출력이 이루어지는 과정 (page 108~110)
(복잡.... 다시 읽고 정리필요)
CPU 제어권
인터럽트
인터럽트 라인
하드웨어 인터럽트
로컬버퍼
큐
7. 프로세스의 두 가지 실행 상태
프로세스는 자신의 주소 공간에 있는 코드만 실행하지 않고 커널의 주소 공간에 있는 코드도 실행한다.
프로그램 A 가 메모리에 얹어 지고 프로세스 A가 실행되었을때
- 자신의 주소 공간에 정의된 코드를 실행하면 : 사용자 모드에서의 실행 상태 ( user mode running)
- 커널의 주소 공간에 정의되 코드를 실행하면 : 커널 모드에서의 실행 상태 (kernel mode running)
- 프로세스 A가 커널모드에서 실행 중
즉, 커널의 코드를 실행 하여도 프로세스 A가 실행 중인 것으로 간주.
이 프로세스가 끝 날때는 커널 모드에 진입하여 종료
'책 > 운영체제와 정보기술의 원리' 카테고리의 다른 글
6 장 CPU 스케줄링 (0) | 2023.12.18 |
---|---|
5 장 프로세스 관리 (0) | 2023.12.13 |
3 장 컴퓨터 시스템의 동작 원리 (0) | 2023.11.25 |
2장 운영체제 개요 (1) | 2023.11.25 |
1장 컴퓨터 및 정보기술의 역사 (0) | 2023.11.23 |