본문 바로가기

Domain/시스템 프로그래밍

(9)
1. What is System Programming 컴퓨터의 구성 요소 Compilation System 계층 구조 High level Language Assembly Language Machine Language(Binary code) Operating System Resource manager 동작 단계 Runtime System command : 명령어 shell : 명령어 해석기 library : 유저가 자주 사용하는 함수의 집합. Relocatable objects
2. Programming Environment Linux Generalization of FIle Concept Unix Linux는 Unix의 영향을 받아 만들어진 운영체제이다. Unix의 핵심 객체 File : stream of bytes Process(task) : program in execution Linux file format Compilation in Linux
3. File Programming Disk Structure Disk accses sector addressing 방식을 이용한다. Seek time : 헤드가 적절한 트랙 위치까지 움직이는 시간 Rotational latency : 헤드 아래로 섹터가 나타날 때 까지 걸리는 시간 Transmission time : 요청한 섹터의 read/write 시간 위의 접근 시간을 줄이는 방법 SACN(elevator algorithm) : 기존엔 하드 디스크가 순서대로 서비스를 했으나 헤드가 특정 트랙으로 가는 동안 어떤 서비스가 있으면 그 서비스를 실행하고 이동한다. → seek time이 감소한다. RAID(Redundant Array Inexpensive Disk) : Disk가 메모리에 비해 느려 disk를 여러개 붙여서 만드는 방법. ..
4. Process Structure 프로세스(Process) 프로세스란 수행중인 프로그램으로 메모리 공간과 context(문맥) 정보가 있다. 프로세스는 스케쥴링의 대상이며 프로세스는 서로 자원으로 경쟁하게 된다. 또한 프로세스는 부모 자식 관계를 갖는다. Process Structure Text : 프로그램 코드 Data : 전역변수가 저장되는 영역 Stack : 지역변수, 매개변수, return address 등이 저장되는 영역 Heap : 동적 할당된 값이 저장되는 영역 Stack Detail
5. Task Programming Task-Related System Call Task creation fork() Make a new task (same memory image of parent task) Split the flow control into two (시스템적 관점) Two return value (프로그램 관점) - parent : 자식의 pid / child : 0 Task Execution execve Replace the current task's meemory image with new binary The role of loader Shell Command Interpreter 기본 기능 Display prompt, input parsing Internal command : perform in shell Exter..
6. IA Assembly Programming Assembly Language 언어 계층 구조적인 관점에서 고급 언어와 기계어 사이에 있는 언어이다. 기계어의 Symbolic한 표현이다. -사용 영역 : 하드웨어 제어, 취약성 테스트, 최적화, SW 저작권 보호, SW 유사성 분석, 프로그램 제작, 디버깅, 분석 등 ISA(Instruction Set Architecture) Register model Memory model Instruction model Register Model register는 cpu 내부의 소형 메모리 공간이며 메인 메모리에 비해 접근이 빠르다는 이점이 있다. 1. General Purpose Register 특별한 용도로 사용될 수 있지만 다른 범용적인 용도로도 사용되는 레지스터 EAX(accumulator) : 산술연산 ..
7. IA : History & Features IA(Intel Architecture)의 특징 IA는 CISC의 특징과 RISC의 특징을 모두 갖고 있다. CISC의 특징 명령어 길이가 가변적이고, operand의 수 또한 가변적이다. 다양한 operand addressing mode가 있다. 함수 호출을 stack을 기반으로 한다. SIMD를 지원한다. RISC의 특징 Micro-operations(하나의 명령어를 다시 세부(마이크로) 명령어로 나누어 pipeline으로 연산한다.) Load - Store Architecture Independent Multi-units Out-of-order execution 레지스터를 기반으로한 함수 호출 Register renaming Operand Addressing Mode 예제 Base plus Scal..
8. Optimization Optimization Practice CPE(Cycle Per Element) : 요소당 필요한 cycle. 함수들의 성능을 비교하는 기준이 된다. Basic Program Combine1 Combine2 code motion : 루프에 불필요한 코드를 삭제 혹은 이동시킨다. Combine3 루프 내의 함수 호출을 줄인다. Combine4 불필요한 메모리 참조 횟수를 줄인다. Combine5 Loop unrolling : 루프의 반복 횟수를 줄인다. Combine6 Loop splitting : 변수를 여러개 두어 loop의 반복 횟수를 줄인다. Loop unrolling과 loop splitting은 최적의 정도를 찾아 적절히 할 필요가 있다. 일정 수준 이상으로 프로그래밍할 경우 성능이 기대에 미치..