[운영체제] 프로세스의 구조

찬들이·2022년 8월 12일
0

컴퓨터공학

목록 보기
11/34

🎯 프로세스의 메모리 영역

  • 프로세스는 생성과 동시에 해당 4가지 메모리 영역을 가진다.

    • code : 프로그램을 실행시키는 실행 파일 내의 명령어들이 위치하는 공간
    • data : 전역변수나 static변수들이 들어가는 공간
    • heap : 코드에서 동적으로 만들어지는 객체 또는 동적메모리의 공간
    • stack : 임시데이터(함수 호출, 로컬변수) 등의 공간
  • 프로세스가 생성되면 추가로 이 프로세스의 메타데이터들이 PCB에 저장된다.

🎯 프로세스의 생성과 복사 & 종료

  • 프로세스에서 생성과 종료 과정을 생성과 복사 & 종료 과정이라고 이야기한다.

    • 복사를 같이 이야기하는 이유는 우리가 흔히 더블클릭을 통해 사용하는 API들은 다 부모 프로세스를 복사해서 실행시킨 자식 프로세스이기 때문이다.
  • 프로세스의 생성과 복사 그리고 종료의 과정은 Window와 Unix가 차이를 갖고 있다.

    Window

    • 프로세스의 생성과 복사 & 종료 과정
      1. 현재 내가 돌리려는 코드가 있다고하면 그 코드를 부모 프로세스라 하자.
      2. CreateProcess를 통해 Excel파일을 부른다
      3. 여기서 Excel은 자식 프로세스가 된다.
      4. 동시에 부모 프로세스는 바로 밑에서 Infinite하게 Wait하고 있을 것이다.
      5. 여기서 자식 프로세스가 ExitProcess() 시그널을 보내면 자식 프로세스는 종료 되고 부모 프로세스는 Wait상태에서 Running상태가 될 것이다.

    Linux

    • Linux는 생성 과정에서 fork와 exec 2가지로 나뉜다.
      • fork의 경우 자식 프로세스를 생성할 때 부모 프로세스가 대기 상태에 들어가는 것이 아닌 같이 실행되는 구조를 가지고 있고, 자식과 부모의 가상 메모리가 동시에 존재해 추가적인 작업들이 필요하다.
      • exec의 경우 자식 프로세스를 생성할 때 부모 프로세스가 대기 상태에 들어가고, 부모 프로세스의 가상메모리 공간을 가져다 쓰기 때문에 새로운 가상메모리 공간 생성이나 기존 공간 삭제 등, 다양한 후처리 작업들을 줄여, 효율성을 가져올 수 있게해 준다.
    • 프로세스 생성과 복사 & 종료 과정
    1. fork()를 통해 새로운 프로세스를 만든다.
      • 새로운 프로세스는 자식 프로세스라 부르고, 오리지널 프로세스는 부모 프로세스로 새로운 프로세스가 해당 부모 프로세스의 주소 공간을 복사하고 있다.
    2. 자식 프로세스는 실행 됨과 동시에 부모 프로세스는 함께 실행되고 있다.
      (윈도우와 차이점)
      • execl()를 통해 부모 프로세스를 대기 상태로 만들어 윈도우와 비슷하게 작동하게 할 수도 있다.
    3. 자식 프로세스가 exit() 시그널을 보내면, 자식 프로세스는 종료 되고, 부모 프로세스가 Wait상태에 있는 경우 부모 프로세스를 다시 실행시킨다.

    💡Window vs Linux (command)

profile
Junior-Backend-Developer

0개의 댓글