프로세스 가기 전...

Single Ko·2023년 4월 24일
0

operating system

목록 보기
3/13

프로그램의 실행(메모리 load)

Virtual memory(논리적 주소)

  • 프로그램이 실행될때는 그 프로그램만의 독자적인 주소공간이 만들어진다.

stack - 함수에 대한 호출과 리턴들에 관련된 정보 (자바의 스택)
data - 전역변수, 프로그램시작에서 종료까지 남아있는 데이터 (자바로 치면 static의 느낌)
code - 실제 CPU가 수행할 기계어가 위치하는 곳

Virtual memory에서 당장 필요한 부분은 물리적 Memory에 올라가게 되고 아직 필요하지 않은 부분은 디스크의 Swap area에 내려가있게 된다.

물리적 메모리와 가상 메모리의 주소는 다른 것이다. 읽으려면 변환을 해줘야된다. 이때 일어나는 것이 Address translation.

커널 주소 공간의 내용

  • 모든 프로세스들을 관리하기 위한 자료구조를 가짐 PCB(Process Controll Block)
  • 모든 하드웨어를 관리하기 위한 자료구조를 가짐
  • 커널의 스택은 각 프로세스마다 별도로 두고 있다.

사용자 프로그램이 사용하는 함수

  1. 사용자 정의 함수

    • 자신의 프로그램에서 정의한 함수 ( 우리가 프로그램 만들때 만든 메서드)
  2. 라이브러리 함수

    • 자신의 프로그램에서 정의하지 않고 갖다 쓴 함수 ( 자바의 main 메서드)
    • 자신의 프로그램의 실행 파일에 포함되어 있다.

커널 함수

  • 사용자 프로그램에 있는 함수가 아니고 커널에 있는 함수
  • 운영체제 프로그램의 함수
  • 커널 함수의 호출 = 시스템 콜

프로그램의 실행 흐름

  • 프로그램이 실행되는 흐름을 나타내보았다.

  • 애플리케이션이 실행 되면 UserMode에서 함수들이 실행.

  • I/O나 현재의 권한으로 할 수 없는 명령을 실행할땐 System Call로 Kernel 모드로 전환.

    이러한 흐름은 프로그램이 끝날때 까지 계속 일어난다.

profile
공부 정리 블로그

0개의 댓글