시스템프로그래밍 4

[시프] 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 구현을 ..

[시프] 3-1 disk의 구조

01 디스크의 구성요소 : Platter, Spindle, Surface / Track, Sector, Cylinder / Head, ARM Platter (원판) disk는 기본적으로 레코드판처럼 생긴 원판이 여러개 쌓여있는 형태이다. 원판의 개수는 disk 용량에 따라 다르다. Spindle (축) disk는 동작할 때 회전하면서 사용되고, 원판은 축을 중심으로 회전한다. Surface (표면) 실제 data를 저장하는 곳이다. 원판의 위아래 총 2곳에 데이터를 저장한다. 3개의 원판 → 6개의 표면 Track (동심원) 동심원은 원판(platter)마다 몇 천 개씩 그려져 있고, 각 동심원을 트랙이라고 부른다. Sector (섹터) track은 sector로 나누어져 있다. ‘disk는 sector..