운영체제와 정보기술의 원리 책 요약 정리
1. 프로그램의 구조와 인터럽트
프로그램의 주소영역 분류 : 코드, 데이터, 스팩
1) 코드 영역 : 프로그램 함수의 코드가 기계어로 변환되어 저장
2) 데이터 영역 : 전역 변수 등 프로그램이 사용하는 데이터 저장
3) 스택 영역 : 함수가 호출될 때 함수의 수행을 마치고 복귀할 주소 및 데이터를 임시로 저장
인터럽트 발생 시 프로그램 정보를 운영체제의 프로세스 제어 블록에 저장한다.
그 후 프로그램을 중단하고 인터럽트의 로직을 수행한다.
2. 컴퓨터 시스템의 작동 개요
프로그램 카운터 : CPU가 수행해야 할 메모리 주소를 담고 있는 레지스터
컴퓨터 시스템 - CPU, 메모리
주변 장치 - 컨트롤러(작은 CPU), 메모리
일반명령 : 모든 프로그램 수행 가능
특권 명령 : 보안이 필요한 명령. 운영체제만 수행 가능.
커널 모드 : 운영체제의 코드를 수행 중
사용자모드 : 사용자 프로그램이 수행 중
시스템 콜 : 사용자 프로그램이 운영체제에게 특권명령의 대행을 요청하는 것
3. 프로그램의 실행
프로그램 실행이란
1) 디스크에 존재하던 실행 파일 일부가 메모리에 적재(메모리 효율을 위해 일부만 적재)
2) 프로그램이 CPU를 할당받고 명령을 수행하고 있는 상태
프로세스의 주소 공간
코드, 데이터 스택으로 구성
운영체제 커널 또한 프로그램이다.
코드, 데이터, 스택으로 구성
1) 데이터 : 자원과 현재 수행중인 프로그램(프로세스)을 관리하기 위한 자료구조
2) 스택 : 커널 프로그램 함수 호출 시의 복귀 주소 저장. 프로세스 마다 별도로 생성
4. 사용자 프로그램이 사용하는 함수
프로그램이 사용하는 함수
1) 사용자 정의 함수
2) 라이브러리
3) 커널 함수
사용자정의 함수, 라이브러리 : 프로그램의 코드영역에 기계어 형태로 존재
커널 함수 : 운영체제 커널의 주소 공간에 코드 정의
5. 인터럽트
CPU는 명령을 수행하기 전 인터럽트 라인을 체크한다.
> 인터럽트가 있을 경우 먼저 처리한다.
일반적으로 인터럽트 중에 다른 인터럽트가 발생하는 것을 허용하지 않는다.
하지만 우선순위를 정해 높은 인터럽트가 발생하면 처리하기도 한다.
6. 시스템 콜
자신의 프로그램이 아닌, 커널이라는 다른 프로그램의 주소 공간에 존재하는 함수 호출
> 프로그램 자신이 인터럽트를 세팅하여 실행.
과정
상황 : 사용자 프로그램 A가 디스크 파일을 읽어야 하는 상황
(1) 프로그램 A가 시스템 콜 호출
(2) 프로그램 A가 인터럽트 라인 세팅
(3) CPU가 인터럽트 확인
(4) CPU 제어권이 운영체제로 이양
(5) CPU가 디스크 컨트롤러(디스크의 CPU)에게 명령
(6) 다른 프로세스 B에게 CPU 제어권 이양
(7) 디스크 컨트롤러가 작업 완료 후 인터럽트 발생
(8) CPU 제어권이 B에서 운영체제로 이양
(9) 인터럽트 로직 처리 (장치 메모리에서 컴퓨터로 데이터 옮김)
(10) 포르세스 B에게 CPU 제어권 이양
(11) B가 끝난 후 사용자 프로그램 A 프로세스 진행
프로그램 A - 운영 체제 - 프로그램 B - 운영체제 - 프로그램 B - 프로그램 A
사용자 프로그램이 CPU를 뺏기는 2가지 경우
1) 타이머에 의해 인터럽트 발생
> 짧은 시간에 여러 프로그램을 번갈아 처리하면서 사용자는 동시처리라고 느낄 수 있게 함
> 시분할 시스템
2) 시스템 콜
> 당장 다음명령을 수행할 수 없음. 운영체제 및 타 프로그램에 CPU 이양
7. 프로세스의 두 가지 실행 상태
사용자 모드의 실행 상태 : 자신의 주소 공간에 정의된 코드 실행
커널 모드의 실행 상태 : 커널의 시스템 콜 함수 실행
하지만 프로그램이 시스템콜을 통해 실행되는 동안도 프로그램 A가 실행 상태에 있다고 본다.
프로그램 A가 해야할 일을 운영체제가 대신 하는 것이기 때문이다.
'Infra > 운영체제' 카테고리의 다른 글
5. 프로세스 관리 (0) | 2021.10.18 |
---|---|
3. 컴퓨터 시스템 (0) | 2021.10.15 |
2. 운영체제의 개요 (0) | 2021.10.15 |
1. 컴퓨터 및 정보기술의 역사 (0) | 2021.10.15 |
댓글