운영체제[3.프로세스 관리(1)]

이유정·2023년 6월 4일
0

운영체제

목록 보기
6/49

목표

프로그램의 실행 과정을 이해하고 커널이 가진 내용과 사용자 프로그램이 사용하는 함수를 알아본다.

프로그램의 실행

프로그램이란게 파일시스템에 실행파일 형태로 저장
실행시키면? 그 프로그램이 메모리에 올라가서 프로세스가 된다.
운영체제 커널이 메모리에 기본적으로 올라가있고
사용자 프로그램들을 실행을 시키ㅣ면 메모리에 올라가서 실행되는것이다.

사실은 중간에 한단계 더 거치게 되어있다.

  • 프로그램이 실행될 때 프로그램만의 독자적인 address space가 만들어진다. => virtual memory
  • 실제로 존재하는게 아니라 머리속에 존재
  • 각각의 프로그램들은 0번째부터 존재
  • 당장 필요한 부분들은 물리적 메모리에 올라가고, 그렇지 않은 부분은 disk의 swap area에 올라가 있다.
  • 이중에 일부는 파일 시스템에 실행 파일 형태로 있기도 한다.

  • 이 프로세스의 각각의 address space에는 크게 몇가지 구성요소가 있다. => 코드 , 데이터, 스택 / 코드에는 실행파일에 있던 코드가 올라오는 부분으로서 실제 cpu가 실행할 기계어가 올라온다. 데이터는 데이터가 보관되는 영역인데 프로그램이 실행되다가 메모리 데이터를 쓸 때가 있다. 배열을 잡아서 쓰거냐 변수를 잡아서 쓰거나. 함수 안에 있는 지역 변수 같은 건 스택에 들어가 있고, 전역변수나 프로그램이 시작때부터 종료할 때까지 남아있는 데이터는 데이터 영역에 위치한다.
  • 스택은 어떤 프로그램들이 어떤 언어로 작성되었든 간에 . 함수 호출과 리턴과 관련된 정보를 스택이라는 곳에 차곡차곡 쌓아놨다가 리턴될 때는 내용을 다시 읽어서 되돌아간다.
  • 운영체제의 커널도 사실 하나의 프로그램이기 때문에 함수구조로 되어있다. 커널의 주소공간도 코드, 데이터, 스택으로 구성되어있다. 함수호출을 하기 때문에 code, 커널도 전역변수 같은걸 쓰기 때문에 data 영역이 있다.

커널 주소 공간의 내용

운영체제는 무얼 하는가? 시스템 안에 있는 자원을 효율적으로 관리
=>그러려면 코드가 함수 형태로 커널에 다 들어가 있어야 한다.
또 무얼하는가? 사용자에게 편리한 인터페이스를 제공
=> 운영체제 커널에 함수 형태로 다 들어가 있는 것임.
운영체제가 언제 호출되나? 인터럽트가 들어왔을 때
=> 인터럽트일 때 뭘 처리해야 하는지, 시스템콜 코드 역시 커널 코드에 들어가 있다.

운영체제는 하드웨어도 다 관리하지만 시스템 안에서 돌아가는 모든 프로세스를 관리해야 한다. => 누구한테 메모리를 얼마나 줄 것이며 누구한테 cpu를 얼마나 줄 것이며

  • 모든 하드웨어를 관리하기 위한 자료구조가 있고, 모든 프로세스들을 위한 자료구조도 가지고 있습니다. (PCB)
  • PCB는 process control block, 컴퓨터 안에 프로세스가 10개 돌아가 있으면 pcb 10개 만들어진다.

  • stack은 특이한 구조를 가지고 있다.
  • 각 커널의 스택은 프로세스마다 별도로 가지고 있습니다. 일반적인 사용자 프로그램에서와 다른 점이다.
  • 커널의스택이기 때문에 커널함수가 누구 때문에 호출됐는가? 프로세스별로 별도의 스택을 쓰고 있다.

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

  • 내 코드가 아니라 커널에 들어가있는 함수라는 것.
  • 내가 프로그램을 만들어서 메인 전부 내 프로그램 안에서 실행되는 코드라는 것 vs 디스크에서 파일을 호출하는 함수 i/o는 커널에 정의된 함수이기 때문에 커널로 cpu 제어권이 넘어가서 커널 함수를 실행해야 한다.
  • 내 함수나 라이브러리 함수를 이용하는 것은 그냥 내 프로그램 안에서 프로그램 카운터 값만 바꿔서 다른 위치의 기계어를 실행하는 것
  • 시스템 콜은 운영체제 안의 커널 함수를 호출하는 것은 가상 메모리의 주소공간을 가로질러서 다른 프로그램의 영역에 완전히 바뀌는 것 => cpu 제어권을 운영체제한테 넘겨서 실행

프로그램의 실행

  • mode bit이 0이면 => 커널 모드 운영체제가 cpu를 쓰고 있어서 뭐든지 다 할 수 있다.
  • mode bit이 1이면 => 운영체제가 사용자 프로그램한테 cpu를 넘겼을 때 이걸 user mode라고 한다. 제한된 기계어만 실행할 수 있다.
profile
강의 기록 블로그

0개의 댓글