Just do IT
article thumbnail
Chapter 04 시스템 프로그래밍 (2)

프로그램, 프로세스, 스레드 * 프로그램 : 바이너리, 코드 이미지, 응용 프로그램, Application, 또는 실행 파일 * 프로세스 : 실행 중인 프로그램 (메모리 적재 + 프로세스 상태 정보 포함) * 스레드 - 리눅스 프로세스는 기본 스레드 포함 - 싱글스레드 프로세스 : 기본 프로세스 - 멀티스레드 프로세스 : 여러 스레드 존재 프로세스 ID * pid(process id), 각 프로세스는 해당 시점에 unique한 pid를 가짐 * pid 최대 값은 32768 * 부호형(signed) 16비트 정수값 사용 * 최근 할당된 pid가 200이라면, 그 이후는 201, 202… 식으로 할당된다 프로세스 계층 * 최초 프로세스 : init 프로세스, pid 1 * init 프로세스는 운영체제가 생성..

article thumbnail
Chapter 04 시스템 프로그래밍 (1)

시스템 프로그래밍의 기반 요소 * 시스템 콜 (system call) * C 라이브러리 * C 컴파일러 시스템 콜 * 시스템 콜 : 운영체제 리소스나 서비스 요청을 위해, 사용자 영역에서 커널 영역으로 들어가는 함수 * 주요 시스템콜 : read(), write(), open() 등 * 리눅스 / 유직스는 C 언어로 만들어져있으므로, 시스템콜도 C언어로 구현되어 있다 시스템 콜은 어떻게 구현? * eax 레지스터에 시스템 콜 번호를 넣는다 * ebx 레지스터에는 시스템 콜에 해당하는 인자값을 넣는다 * 소프트웨어 인터럽트 명령을 호출하면서 0x80값을 넘겨준다 1. CPU는 사용자 모드를 커널 모드로 바꿔준다 2. IDT (Interrupt Descrpitor Table)에서 0x80에 해당하는 주소(함..

article thumbnail
Chapter 03 쉘로 시작하는 시스템 프로그래밍 (5)

리눅스와 파일 정리 * 모든 것은 파일이라는 철학을 따름 - 모든 인터렉션은 파일을 읽고, 쓰는 것처럼 이루어져 있음 - 마우스, 키보드와 같은 모든 디바이스 관련된 기술도 파일과 같이 다루어짐 - 모든 자원에 대한 추상화 인터페이스로 파일 인터페이스를 활용 가상 파일 시스템 * 파일 네임스페이스 - A 드라이브 (A:/), C 드라이브 (C:/windows) (X) - 전역 네임스페이스 사용 /media/floofy/dave.jpg 예: cat tty 슈퍼블록, inode와 파일 * 슈퍼블록 : 파일 시스템의 정보 * 파일 : inode 고유값과 자료구조에 의해 주요 정보 관리 - '파일이름:inode'로 파일이름은 inode 번호와 매칭 - 파일 시스템에서는 inode를 기반으로 파일 엑세스 - in..

article thumbnail
Chapter 03 쉘로 시작하는 시스템 프로그래밍 (4)

프로세스 VS 바이너리 * 코드 이미지 또는 바이너리 : 실행파일 * 실행 중인 프로그램 : 프로세스 - 가상 메모리 및 물리 메모리 정보 - 시스템 리소스 관련 정보 - 스케쥴링 단위 리눅스는 다양한 프로세스 실행 환경 * 리눅스는 기본적으로 다양한 프로세스가 실행됨 - 유닉스 철학 : 여러 프로그램이 서로 유기적으로 각자의 일을 수행하면서 전체 시스템이 동작하도록 하는 모델 foreground process / background process * foreground process : 쉘(shell)에서 해당 프로세스 실행을 명령한 후, 해당 프로세스 수행 종류까지 사용자가 다른 입력을 하지 못하는 프로세스 * background process : 사용자 입력과 상관이 실행되는 프로세스 - 쉘(she..