[운영체제] 프로세스의 개념CSE/운영체제 (operating system)2024. 6. 19. 00:00
Table of Contents
반응형
초기 컴퓨터 시스템과 다중 프로그래밍
- 초기 컴퓨터 시스템
- 프로그램을 한 번에 하나씩 실행
- 실행 중인 프로그램이 모든 컴퓨터 자원을 독점
- 다중 프로그래밍 환경
- 여러 프로그램을 메모리에 동시에 적재 후 병행 실행
- 컴퓨터 효율성 크게 향상
- 병행 실행 프로그램들은 자원 공유 필요
- 자원 공유를 효과적으로 제어하기 위해 프로세스 개념 도입
프로세스의 정의와 기원
- '프로세스' 용어 기원
- 1960년대 멀틱스$_{Multics}$ 운영체제에서 처음 사용
- IBM 운영체제에서는 '작업$_{task}$’ 으로 불림
- 프로세스 정의
- 실행 중인 프로그램
- 비동기적$_{asynchronous}$ 행위
- 실행 중인 프로시저
- 실행 중인 프로시저의 제어 흐름
- 운영체제에 존재하는 프로세스 제어 블록$_{PCB}$
- 프로세서에 할당되어 실행 가능한 객체 (디스패치 가능한 대상)
실행 중인 프로그램으로서의 프로세스
- 일반적인 정의
- '실행 중인 프로그램'
- 실행 중인 프로그램 의미
- 디스크에 저장된 프로그램이 메모리에 적재
- 운영체제의 제어를 받는 상태
- 프로세스 특성
- 자신만의 메모리 영역(주소 공간) 보유
- 프로그램 실행의 인스턴스
- 예시
- 웹 브라우저 창 1개 열면 프로세스 1개 생성
- 웹 브라우저 창 2개 열면 프로세스 2개 생성
프로세스의 자원 할당
- 필요한 자원
- 프로세서 점유 시간
- 메모리
- 파일
- 입출력 장치
- 자원 할당 시점
- 프로세스 생성 시
- 프로세스 실행 시
- 포함 요소
- 현재 활동 상태 나타내는 프로그램 카운터
- 프로세서의 현재 활동 (레지스터 내용)
프로그램과 프로세스의 차이
- 프로그램
- 컴파일된 코드와 초기화된 전역 변수, 문자열 상수 등 정적 데이터 포함
- 정적인 개체
- 프로세스
- 메모리 구조 형성
- 프로그램 카운터와 레지스터처럼 현재 사용 자원에 관한 정보 포함
- 동적인 개체
프로세스의 메모리 구조
- 스택
- 지역 변수 저장
- 함수 호출 시 증가, 반환 시 감소
- 스택 포인터와 힙 포인터가 만나면 메모리 소진 의미
- 힙
- 코드 영역과 별도로 유지되는 동적 메모리 영역
- 프로그램 실행 중 동적 메모리 할당 사용
- 데이터
- 전역 변수와 정적 변수 저장
- 실행 전에 초기화
- 코드
- 실행 명령 포함 메모리 영역
- 디스크에서 읽어 실행되는 컴파일된 프로그램 저장
사용자와 시스템 관점에서의 프로세스
- 사용자 관점
- 주소 공간을 가지고 실행하는 프로그램
- 시스템 관점
- 실행 중인 프로그램
- 스케줄러가 디스크에 저장된 프로그램에 프로세서 할당
- 장치나 메모리 자원 참조
- 프로세스 간 교착 상태, 보호, 동기화 정보 교환
프로세스의 역할과 종류
- 역할에 따른 구분
- 시스템(커널) 프로세스
- 모든 시스템 메모리와 프로세서 명령에 접근할 수 있으며 프로세스 실행 순서를 제어하거나 사용자 및 커널 영역을 감시하고 사용자 프로세스를 생성하는 기능
- 사용자 프로세스
- 사용자 코드를 수행하는 프로세스
- 시스템(커널) 프로세스
- 병행 수행 방법에 따른 구분
- 독립 프로세스
- 다른 프로세스에 영향을 주지 않거나 받지 않고 병행 수행하는 프로세스
- 협력 프로세스
- 다른 프로세스에 영향을 주거나 받으며 병행 수행하는 프로세스
- 독립 프로세스
References
728x90
반응형
'CSE > 운영체제 (operating system)' 카테고리의 다른 글
[운영체제] 프로세스의 상태 변화, 프로세스 제어 블록 (PCB) (0) | 2024.06.19 |
---|---|
그림으로 배우는 구조와 원리 운영체제 - 연습문제 3장 풀이 (0) | 2023.12.25 |
그림으로 배우는 구조와 원리 운영체제 - 연습문제 2장 풀이 (0) | 2023.12.23 |
그림으로 배우는 구조와 원리 운영체제 - 연습문제 1장 풀이 (0) | 2023.07.03 |
@junyeokk :: 나무보다 숲을
경북대학교에서 컴퓨터과학을 전공하고 있는 학부생입니다. 컴퓨터 전공 관련 내용들과 프론트엔드 개발 지식들을 공유합니다. React, Javascript를 다룰 줄 알며 요즘에는 Typescript에도 관심이 생겨 공부하고 있습니다. 서로 소통하면서 프로젝트 하는 것을 즐기며 많은 대외활동으로 개발 능력과 소프트 스킬을 다듬어나가고 있습니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!