View
컴공전공자_따라잡기 | CH03. 프로세스와 스케쥴러의 이해-프로세스 구조와 컴퓨터의 구조
Melody:) 2021. 11. 26. 20:16프로세스 구조
- 컴파일 : 0과 1로 된 기계언어로 변환 되는 것.(바이너리라고도 부름)
- CODE : 프로그램 코드가 컴파일된 언어로 저장되는 영역
- DATA : 프로그램 내에 선언된 변수의 값을 저장
- STACK : 함수가 실행 이후의 동작에 대한 주소인 return address값을 동적으로 저장-> 첫번째인자 저장 -> 두번째 인자 저장 -> 두번째 데이터 삭제 -> 첫번째 데이터 삭제 -> return address 삭제 -> 해당 함수 다음의 코드 실행
- HEAP : 대표 적으로 molloc()이라는 함수가 있다. 특정 메모리 공간을 동적으로 생성하게 되는데, 이처럼 HEAP은 별도로 사용할 공간을 만드는 곳이다.
코드 예시 보기
- void meaningless는 단수 함수 선언.
- stack 자료구조의 원리로 작동.
- 함수 실행 순서 : main() -> meaningless() -> return 0;
- Stack : return address : 0006h -> argc -> argv -> return address : 0005h -> data = 1 => temp = 1
실행이 끝나면, 데이터들을 순차적으로 없앤다. - temp = 1 -> data = 1 -> return address : 0005h(PC의 값을 0005h로 변환) -> argv -> argc -> return address : 0006h(PC의 값을 0006h로 변환) -> 프로그램 종료
프로세스와 컨텍스트 스위칭
- 컨텍스트 스위칭 : 프로세스 A->B로 바꿔주는 매커니즘을 지칭
- 프로세스(process)는 일반적으로 어떻게 구성되어 있을까?
- text(CODE):코드
- data : 변수/초기화된 데이터
- stack : 임시 데이터(함수 호출, 로컬 변수 등) (=스택 프레임)
- heap : 코드에서 동적으로 만들어지는 데이터
프로세스와 컴퓨터 구조
- PC(Program Counter) + SP(Stack Pointer)
- Program이 실행되면, CODE가 아래서부터 쌓이면서 실행된다.
- EBP 레지스터 : 항상 스택의 최상위 값을 저장한다. 프로그램에 문제가 있을 때, 어느 함수에서 문제가 생겼는지를 빠르게 트레킹 하기위해 제공한다.
- EAX : 함수의 return 값을 저장.
'Computer Science > 운영체제(OS)' 카테고리의 다른 글
컴공전공자_따라잡기 | CH03. 프로세스와 스케쥴러의 이해-프로세스 구조와 스택 오버플로우 (0) | 2021.11.27 |
---|---|
컴공전공자_따라잡기 | CH03. 프로세스와 스케쥴러의 이해-프로세스 구조와 힙 (0) | 2021.11.27 |
컴공전공자_따라잡기 | CH03. 프로세스와 스케쥴러의 이해-인터럽트 내부 동작 (0) | 2021.11.26 |
컴공전공자_따라잡기 | CH03. 프로세스와 스케쥴러의 이해-인터럽트 란?, 인터럽트 종류 (0) | 2021.11.26 |
컴공전공자_따라잡기 | CH03. 프로세스와 스케쥴러의 이해-선점형과 비선점형 스케쥴러, 스케쥴링 알고리즘 조합 (0) | 2021.11.25 |
reply