[운영체제] #2 Program Execution

또상·2022년 5월 14일
0

Operating System

목록 보기
3/13
post-thumbnail
  • System Structure 위에서 Program 을 실행

저장장치 계층 구조

  • 위로 갈 수록 비싸고 빠르기 때문에 용량이 적다.
  • Secondary 에서 자주 쓰는 것을 매번 느린 장치에서 읽어오지 않고 빠르게 쓰기 위해 휘발성 메모리에 올려놓고 쓴다.

프로그램 실행 시 메모리 로드

  • 큰 구조 : Disk 에 있는 실행 파일 (exe) 를 실행하면, 물리적인 메모리에 올라가서 프로세스가 된다.
  • 물리적인 메모리에 올라가기 전에 가상 메모리라는 단계를 거침.

  • 가상 메모리 (Virtual Memory) : 각 프로그램의 독자적인 메모리 공간 (실제 메모리에 올라간 공간이 아님)
  • 실행하면 가상 메모리에 stack, data, code 영역을 가지게 되고,
  • 이 가상 메모리 공간을 HW 를 이용해서 실제 메모리 공간으로 당장 필요한 부분만 올리고
  • 불필요한 부분은 HDD 의 Swap Area 에 내린다.

커널 주소 공간의 내용

  • 그럼 커널 주소의 가상 메모리 공간에는 무슨 내용이 들어 있을까??

  • 코드 영역
    • 시스템 콜, 인터럽트 처리 루틴
    • 자원 관리
    • 편리한 서비스 제공을 위한 코드
  • 데이터 영역
    • PCB : 프로그램을 관리하기 위한 자료구조들
    • HW 를 관리하기 위한 자료구조들
  • 스택 영역
    • 함수 호출을 위한 영역
    • 하지만, 여러 프로세스가 시스템 콜을 통해 OS 커널의 코드를 실행할 수 있으므로 프로세스 별로 스택 공간을 따로 둔다.

프로그램이 사용하는 함수 비교

  • 프로그램 == 거대한 함수
  • 프로세스의 코드 영역
    • 사용자 정의 함수
    • 라이브러리 함수
  • 커널의 코드 영역
    • 커널 함수
    • OS 프로그램의 함수로 시스템 콜을 통해서 호출한다.



출처 / 참고

반효경 교수님의 2014 운영체제 2. System Structure & Program Execution 강의를 듣고 포스팅하고,
공룡책을 읽고 추가 정리합니다.

사진 출처는 강의 자료.

profile
0년차 iOS 개발자입니다.

0개의 댓글