[OS] 프로세스의 생성&관리

귀찮Lee·2023년 4월 10일
0

Operating System

목록 보기
10/14

◎ 프로세스의 구조

  • 코드 영역

    • 프로그램의 본문이 기술, 탑재된 코드는 읽기 전용으로 처리
  • 데이터 영역

    • 코드가 실행되면서 사용하는 변수나 파일등의 각종 데이터를 모아놓은 곳
    • 읽기와 쓰기 모두 가능
  • 스택 영역

    • 운영체제가 프로세스를 실행하기 위해 부수적으로 필요한 데이터를 모아놓은 곳
    • 프로세스 내에서 함수를 호출하면 함수를 수행하고 원래 프로그램으로 되돌아올 위치를 저장
    • 사용자에게는 보이지 않음

◎ 프로세스의 생성과 복사

  • fork()

    • 실행중인 프로세스로부터 새로운 프로세스를 복사하는 함수
    • 장점 : 프로세스 생성 속도 빠르고 추가 작업 없이 자원 상속이 가능
      → 시스템 관리를 효율적으로 할 수 있다.
  • 동작 과정

    • 프로세스 제어 블록을 포함한 부모 프로세스 영역 대부분이 자식 프로세스에 복사되어 똑같은 프로세스가 만들어짐
      - 프로세스 구분자, 메모리 관련 정보, PPID, CPID는 달라짐

◎ 프로세스의 전환

  • exec() 호출 과정
    • 기존의 내용을 지우고 새로운 코드로 바꿔버림
    • 데이터 영역이 새로운 변수로 채워지고 스택 영역이 리셋됨
    • 프로그램 카운터 레지스터를 비롯한 각종 레지스터와 사용한 파일 정보가 모두 리셋됨
      • PID, PPID, CPID, 메모리 관련 사항은 변하지 않음
      • exec()로 실행해도 PPID값은 변하지 않기 때문에 해당 프로세스가 끝나면 부모 프로세스에게 값 전달

◎ 프로세스의 계층 구조

  • 유닉스의 프로세스 계층구조

    • 유닉스의 모든 프로세스는 init 프로세스의 자식이 되어 트리 구조를 이룸
    • 장점1 : 여러 작업을 동시에 처리할 수 있다.
    • 장점2 : 프로세스 재사용이 용이함
    • 장점3 : 자원 회수가 쉽다. (책임 관계가 명확해 시스템을 관리하기 수월함)
  • 미아 프로세스

    • 프로세스가 종료된 후에도 비정상적으로 남아 있는 프로세스
    • ex. C 언어의 return, exit() : 자식 프로세스가 작업이 끝났음을 부모 프로세스에게 알리는 것으로 미아 프로세스 발생을 방지함
profile
장비를 정지합니다.

0개의 댓글