이전 시간에는 컴퓨터의 구성요소에 대해 간단히 알아보았습니다.
이번에는 컴퓨터가 어떻게 프로그램을 실행하고 컴퓨터의 구성요소들을 관리하는지 알아보겠습니다.
프로그램 : 컴퓨터를 실행시키기 위한 일련의 순차적으로 작성된 명령어 모음
프로세스 : 컴퓨터에서 실행중인 프로그램(일, task)
프로그램은 우리가 특정 작업을 수행하기 위하여 작성한 코드이며, 이것이 실행될 때 프로세스라고 부릅니다. OS는 다양한 프로세스들이 요청한 작업을 컴퓨터 자원을 활용하여 수행합니다. 그럼 이제 프로그램이 '실행'된다는 것의 의미를 알아보겠습니다.
프로세스는 일반적으로 아래와 같은 구조를 가지고 있습니다. 총 4Gb의 메모리로 구성되어 있으며, 0~3Gb까지의 주소를 User Space, 3Gb~4Gb까지의 주소를 Kernal Space라고 부릅니다. 우리가 작성한 프로그램에 관한 정보는 0~3Gb의 User Space의 메모리에 올라가며, 순차적으로 코드가 수행됩니다.
이렇게 만들어진 프로세스의 메모리 공간을 PCB(Process Control Block)이라고 합니다. PCB는 User Space(0~3Gb), Kernal Space(3Gb ~ 4Gb)로 구성되어 있으며, Kernal Space는 모든 프로세스에서 공유하게 됩니다.(이 부분은 나중에 더 자세히 설명)
User Space는 Stack, Heap, Data, Text로 구성되어 있으며 다음과 같은 데이터가 저장됩니다.
1. Stack : 프로그램 실행 과정에서 생성되는 지역변수, 주소값 등을 저장하는 공간(순차적으로 주소가 낮아지는 방향으로 쌓임)
2. Heap : 동적으로 할당되는 메모리 공간 (By malloc ...)
3. Data : 1) Data : 초기화된 전역변수가 저장된다.
2) BSS : 초기화되지 않은 전역변수가 저장된다.
4. Text(Code) : 프로그램 실행 코드
'데이터 사이언스 > 패스트캠퍼스' 카테고리의 다른 글
패스트캠퍼스 - 컴퓨터공학 - 가상메모리 & 페이징 시스템 (0) | 2020.04.12 |
---|---|
패스트캠퍼스 - 컴퓨터공학 - Scheduler & Thread (0) | 2020.04.10 |
패스트캠퍼스 - 컴퓨터 공학_리눅스_프로세스 (0) | 2020.04.01 |
패스트 캠퍼스 - 컴퓨터 공학_운영체제(2) (2) | 2020.03.24 |
패스트 캠퍼스 - 컴퓨터 공학_운영체제(1)_운영체제 발전사 (0) | 2020.03.10 |