OS.xlsx -> ProcessStructure
이 자료구조는 뭐에 쓰이고 왜 강조해서 배웠나?
datastructure.xlsx -> Stack
프로세스 (process) 는 일반적으로 어떻게 동작할까? - 컴퓨터 구조도 복습
PC(Program Counter) + SP(Stack Pointer)
OS.xlsx -> ProcessWithCS
어려우시죠? 지금 듣고 계시는 것만으로도 굉장히 성공하고 계신 것입니다. 정확하게 이해하려면, 깊게 이해할 필요가 있습니다. 깊게 이해하기 어려우면, 막연하게 이해하고 넘어가야 하는데, 막연하다보니 이해가 어렵습니다. 한번 들어서는 이해하기 어렵지만, 여러 기술과 엮이다보니, 설명이 반복될 수 있습니다. 여러 가지 각도에서 결국 설명이 되어지는 것이므로, 꾸준히 듣고 이해하려 노력하다보면, 이해도가 높아집니다.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *data;
data = (int *) malloc(sizeof(int));
*data = 1;
printf("%d\n", *data);
return 0;
}
OS.xlsx -> ProcessWithHeap
DATA를 BSS와 DATA로 분리
출처: http://www.drdobbs.com/security/anatomy-of-a-stack-smashing-attack-and-h/240001832 OS.xlsx -> ProcessAll
스택 오버플로우
출처: http://www.drdobbs.com/security/anatomy-of-a-stack-smashing-attack-and-h/240001832
다시 PC, SP에 주목하자.
Stack, HEAP, DATA(BSS, DATA), TEXT(CODE)
OS.xlsx -> ProcessAllWithCS
PC, SP는 어디에 저장하나?
Process Context Block 이라고도 함
PCB: 프로세스가 실행중인 상태를 캡쳐/구조화해서 저장
프로세스 구조
PCB
컴퓨터 구조 복습 - 레지스터는 어디에?
마치 레코드판 같은?
디스패치 (dispatch): ready 상태의 프로세스를 running 상태로 바꾸는 것
OS.xlsx -> ProcessWithCS
컨텍스트 스위칭 시간이 오래 걸리면... 실제로는 굉장히 짧은 시간 (nano second) 단위로, 프로세스 스위칭이 일어남
밀리초(ms) : 1/1,000초 마이크로초(μs) : 1/1,000,000초 나노초(ns) : 1/1,000,000,000초
어떻게 하면 조금이라도 컨텍스트 스위칭 시간을 짧게 할 수 있을까?
C언어가 아니라, 어셈블리어로 컨텍스트 스위칭 코드를 작성하면...
초기 컴퓨터 프로그램들은 어셈블리어로 작성
컴파일러 등장
리눅스의 경우 컨텍스트 스위칭 코드는 각 CPU마다 별도로 존재
레코드판 가운데에 핀을 놓는 느낌!