시프 3

[시프] 4-3 스택(stack)

01 스택이란? LIFO(Last In First Out) 특성을 가진 메모리 공간의 배열이다. stack에서 사용하는 operation에는 push와 pop이 있다. 그리고 stack은 bottom과 top으로 다루며, 이는 intel에서의 SS와 ESP이다. 02 intel 구조에서의 stack stack을 다루기 위해 사용되는 push와 pop은 실제로 intel에서 어떻게 구현될까? 먼저 ESP에 대해 알아야한다. ESP란 Extended Stack Pointer의 약자로, stack에서 가장 마지막으로 push된 item의 위치, 즉 top을 가리키는 레지스터이다. stack은 바로 이 ESP 레지스터를 이용한 push와 pop 메소드 사용으로 관리된다. push는 ESP가 감소하고 stack의..

[시프] 4-2 프로세스 구조

01 개념적 구조 프로세스에는 크게 text(code), data, heap, stack으로 영역이 나누어진다. 다음은 가상 메모리의 주소 공간을 나타낸 그림이다. 02 C프로그램으로 보는 프로세스 구조① (function pointer) #include int a = 10; int fun1(int arg1) { printf("fun1에서의 arg1 = %d\n", arg1); } int main() { int *pa; int (*func_ptr)(int); pa = &a; printf("a의 주소를 가리키는 포인터 pa = %p\n", pa); printf("포인터 pa안에 들어있는 값 *pa = %d\n", *pa); fun1(3); func_ptr = func1; func_ptr(5); printf..

[시프] 4-1 프로세스의 정의

01 process란? 프로세스는 다음과 같이 정의될 수 있다. 1. 수행 중인 프로그램 2. 자신만의 메모리 공간과 CPU를 가지고 있음 3. 스케쥴링의 대상 (scheduling entity) 4. 자원 할당을 위해 서로 경쟁 5. 부모-자식 관계 구성 (parent-child relation, family) 그렇다면, 프로세스(process)와 프로그램(program)의 차이는 무엇일까? Process(Task)는 active한 객체로, 메모리와 CPU 상에 올라가서 동작한다. Program은 passive한 객체로, 일종의 파일(binary)이라고 할 수 있다. 02 관련 용어(terminology) Load는 프로그램을 disk에서 main memory로 올리는 것을 의미한다. Load 구현을 ..