강의 소개
현재 수강하고 있는 KOCW 내 이화여자대학교 운영체제(2017, 반효경) 강의의 내용을 정리하였습니다.
개발자 관점에서 운영체제 기초를 학습하는 무료 강의로 자세한 강의 내용은 수강을 추천드립니다.
프로그램의 실행
프로그램의 실행(메모리 load)
프로그램
프로그램은 실행 전에 file system안에 파일 형태로 저장되어 있다.
프로세스
프로그램을 실행시키면 메모리에 올라가서 프로세스가 된다.
메모리의 주소
메모리 주소 3가지
1) virtual 메모리의 주소(Address space, 논리적인 주소)
프로그램이 실행될 때 독자적인 Address space가 만들어지며 이것을 virtual 메모리라 한다.
이것은 실제 존재하는 것이 아니라 가상으로 존재한다. 각 프로세스들 만의 주소가 매겨지는 것으로 0번지부터 시작한다.
- virtual 메모리의 주소(Address space)의 구성요소
code: CPU들이 수행할 기계어들이 모인 부분이다. 실행 파일에서의 코드들이 올라온다.
data: 데이터가 보관되는 영역이다. 코드가 실행되다가 메모리 데이터를 사용할 때 쓰는 부분이다.
전역 변수, 프로그램이 실행하고 나서 끝날 때까지 남아있는 변수들이 올라간다.
stack: 지역변수, 함수 호출과 관련된 정보를 스택에 쌓아놨다가 return 될 때는 그 내용을 읽어 되돌아가는 정보들이 올라간다.
2) Physical memory의 주소(물리적인 메모리)
Address space 중에서 당장 필요한 부분은 물리적인 메모리(Physical memory)에 올라간다.
(반면, 당장 필요하지 않은 부분은 Swap area로 보내진다.)
- Address transiation(주소 변환)
물리적인 메모리에서는 운영체제가 낮은 주소를 가지고, 그 위에 프로그램들이 올라가서 주소를 가진다. 즉, virtual 메모리 상의 Address space와 다른 주소를 가지게 된다. 따라서 주소 변환인 Address transiation이 일어난다.
virtual 메모리 주소(논리적 주소)--(변환)--> 물리적 주소
3) Kernal Address space(커널 주소 공간)
- Kernal Address space(커널 주소 공간)의 구성요소
**커널도 코드, 데이터, 스택으로 이루어져 있다. (위의 Addrress space와 마찬가지로)
(커널 개념)
** 커널
메모리에 상주하는 운영체제의 부분을 커널이라 한다. 또 이것을 좁은 의미의 운영체제라고도 한다. 즉 커널은 메모리에 상주하는 부분으로써 운영체제의 핵심적인 부분을 뜻한다.
code(커널 코드): 시스템 콜, 인터럽트 처리 코드와 자원 관리를 위한 코드도 들어있다.
data: PCB가 들어있다.(운영체제가 모든 하드웨어, 현재 실행 중인 모든 프로세스 들을 운영체제가 관리하기 위한 자료구조)
지금 돌아가는 프로세스에 따라 동일한 개수의 PCB를 만들어 관리한다.
stack: 커널의 스택은 프로세스마다 별도로 갖고 있다,
커널로 들어오기 전에 누구에 의해 호출되었는지에 따라서 프로세스 별로 별도의 커널의 스택이 사용된다.
함수
함수의 종류 3가지
1) 사용자 정의 함수
자신의 프로그램에서 정의한 함수이다.
내 프로그램 코드 안에 있는 함수이다. (프로세스 A의 Address space)
2) 라이브러리 함수
자신의 프로그램에서 정의하지 않고 가져다 쓴 함수이다. 자신의 프로그램의 실행 파일에 포함되어 있다.
내 프로그램 코드 안에 있는 함수이다. (프로세스 A의 Address space)
3) 커널 함수
운영체제 프로그램의 함수이다.
'커널 함수의 호출 = ** 시스템 콜'이다.
(내 프로그램에 들어있는 사용자 정의 함수와 라이브러리 함수와 달리) 커널 함수는 내 커널 안에 있다.
** 시스템 콜
** 시스템 콜
사용자 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출하는 것이다.
시스템 콜이 일어나면, CPU 제어권을 운영체제에게 넘겨야 하기 때문에 '시스템 콜'이 일어나면 인터럽트 라인을 세팅해서 CPU 제어권이 운영체제에 넘어가게 한 뒤 실행을 한다. 이때(커널 모드)는 커널의 주소 공간에 있는 코드가 실행된다.
유저 모드와 커널 모드
프로그램이 실행하고 종료될 때까지 유저 모드와 커널 모드를 계속 반복한다.
1) 유저 모드
사용자 정의 함수, 라이브러리 함수 실행 시의 모드이다.
유저 모드는 사용자 프로그램에 CPU를 넘긴 상태로 mode bit이 1이다. 제한된 기계어만 사용 가능하다.
2) 커널 모드
커널 함수의 호출, 즉 시스템 콜 발생 시의 모드이다.
커널 모드는 운영체제가 CPU를 사용하고 있는 상태로 CPU에 붙어있는 mode bit 이 0이다. 이때는 제약 없이 어떤 작업이든 다 할 수 있다.
출처: 운영체제와 정보기술의 원리(반효경 저)
'교육, 학습 > CS스터디_반효경 운영체제' 카테고리의 다른 글
운영체제 - 문맥교환, 프로세스를 스케줄링 하는 큐 (0) | 2022.01.08 |
---|---|
운영체제 - 프로세스 상태(Running, Ready, blocked), 프로세스가 running중 CPU를 반환하는 경우 (0) | 2022.01.06 |
운영체제 - DMA 사용이유(DMA와 CPU, 메모리의 관계), 저장장치 계층구조별 특징과 캐싱 (0) | 2022.01.04 |
운영체제 - 동기식 입출력, 비동기식 입출력의 차이점, 공통점 (0) | 2022.01.03 |
운영체제 - 인터럽트 종류(trap, exception, 시스템콜, 하드웨어 인터럽트) (0) | 2022.01.03 |
댓글