1 minute read

프로세스의 연산

- 프로세스의 구조
    - 코드 영역

        프로그램의 본문이 기술된 곳

        읽기 전용으로 처리됨

    - 데이터 영역

        코드가 실행되면서 사용하는 변수가 파일 등의 각종 데이터

        읽기 쓰기 가능

    - 스택 영역

        운영체제가 프로세스를 실행하기 위해 부수적으로 필요한 데이터

- 프로세스의 생성과 복사
    - 생성

        운영체제는 프로그램을 메모리로 가져와 코드 영역에 넣고 PCB 생성

        메모리에 데이터 영역과 스택 영역 확보한 후 프로세스 실행

    - fork() 시스템 호출
        - 개념

            새로운 프로세스를 복사하는 함수

            커널에서 제공하는 일종의 시스템 호출

            기존의 프로세스는 부모 프로세스가 되고 새로 생긴 프로세스는 자식 프로세스가 되어 부모-자식 관계로 연결됨

        - 동작 과정

            PCB 포함한 부모 프로세스 영역의 대부분이 자식 프로세스에 복사됨

            프로세스 구분자, 메모리의 위치가 바뀜

            부모/자식 프로세스는 자식/부모 프로세스 구분자를 가짐

        - 장점

            저장장치에서 새로 가져오기 않고 기존 메모리에서 복사하기 때문에 생성 속도 빠름

            부모 프로세서의 자원을 추가 작업 없이 자식이 상속할 수 있음

            자식 프로그램이 종료 시 부모 프로세스가 자원을 정리하기 때문에 시스템 관리 효율적

- 프로세스의 전환

    기존 프로세스를 새로운 프로세스로 전환

    - exec() 시스템 호출
        - 개념

            기존의 프로세스를 새로운 프로세스로 전환하는 함수

            PCB 구조체 재활용을 통해 새로운 코드 영역만 가져오면 되기 때문에 운영체제의 작업이 수월함

        - 동작 과정

            코드 영역에 있는 기존 내용을 지우고 새로운 코드로 바꿈

            데이터 영역, 스택 영역, 각종 레지스터와 사용한 파일 정보등이 프로세스를 처음 시작하는 것 처럼 내용이 정리됨

- 프로세스의 계층 구조

    OOP 와 비슷함

    - 유닉스의 계층 구조

        커널이 처음 메모리에 올라와 부팅될 시 init 프로세스 생성 후 나머지 프로세스를 init 프로세스의 자식을 만듦

    - 계층 구조의 장점

        자식 프로세스들을 만들어서 여러 작업을 동시에 처리할 수 있음

        부모 자식관의 책임 관계가 분명해져 자원 회수가 편리해짐

    - 고아 프로세스

        부모 프로세스가 자식 프로세스의 자원 회수 전에 종료되는 것

        자식 프로세스가 종료되지 않거나 종료되어도 사용하던 자원 그대로 남음

        효율적 운영에 방해됨

        - 좀비 프로세스

            자식 프로세스가 종료했음에도 부모가 뒤처리 하지 않은 경우

        - 컴퓨터가 느려지는 현상

            각종 프로세스와 고아/좀비 프로세스가 메모리를 차지하기 때문

Categories:

Updated: