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

동적 메모리 생성하기 * heap 영역에 생성 - mollac 함수 파일 처리 성능 개선 기법 - 메모리에 파일 매핑 * [start+offset] ~ [start+offset+length] 만큼의 물리 메모리 공간을 mapping할 것 을 요청 * 보통 start: NULL 또는 0 사용, offset: mapping되기 원하는 물리 메모리 주소로 지정 * prot: 보호 모드 설정 - PROT_READ(읽기 가능) - PROT_WRITE(쓰기 가능) - PROT_EXEC(실행 가능) - PROT_NONE(접근 불가) * flags: 메모리 주소 공간 설정 - MAP_SHARED(다른 프로세스와 공유 가능) - MAP_PRIVATE(프로세스 내에서만 사용 가능) - MAP_FIXED(지정된 주소로 공간..

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

Pthread * thread 표준 API : POSIX 스레드 또는 Pthread(피-스레드)라고 부름 * Pthread API - 저수준 API로 100여개의 함수 제공 - 복잡하지만, 유직스 시스템 핵심 스레딩 라이브러리 - 다른 스레딩 솔루션도 결국 Pthread를 기반으로 구현되어 있으므로, 익혀둘 가치가 있다 Pthread 라이브러리 * 헤더 파일에 정의 * 모든 함수는 pthread_로 시작 * 크게 두 가지 그룹 - 스레드 관리 : 생성, 종료, 조인, 디태치 함수 등 - 동기화 : 뮤텍스 등 동기화 관련 함수 * 기본라이브러리(glibc)와 분리된 libpthread 라이브러리에 pthread 구현되어 있으므로 컴파일시 명시적으로 -pthread 옵션이 필요하다 스레드 생성 * threa..

article thumbnail
Chapter 07 쉘 스크립트

쉘 스크립트 * 쉘을 사용해서 프로그래밍을 할 수 있음 * 서버 작업 자동화 및 운영 (DevOps)을 위해 기본적으로는 익혀둘 필요가 있음 * 쉘 명령어를 기본으로 하되, 몇 가지 문법이 추가된 형태 * 시스템 프로그래밍에서 꼭 익히는 내용 중 하나 기본 문법 * 쉘 스크림트는 파일로 작성 후 파일을 실행 * 파일의 가장 위의 첫 라인은 "#!/bin/bash"로 시작 * 쉘 스크립트 파일은 실행 권한을 가지고 있어야 한다 * 일반적으로 '파일이름.sh'와 같은 형태로 파일 이름을 작성한다 주석 * # 기호로 시작하는 라인은 주석처리이다 변수 * 선언 - 변수명 = 데이터 - 변수명 = 데이터 사이에 띄어쓰기는 허용되지 않음 * 사용 - $변수명 으로 사용됨 리스트 변수(배열) * 선언 - 변수명 = ..

article thumbnail
Chapter 06 시그널

시그널과 IPC * 본래 다른 용도이지만, IPC로도 사용가능한 기법 - 시그널 (signal) - 프로세스에 이벤트 전달 - 소켓 (socket) - 네트워크 시그널(signal) * 유직스에서 30년 이상 사용된 전통적인 기법 * 커널 또는 프로세스에서 다른 프로세스에 어떤 이벤트가 발생되었지를 알려주는 기법 * Ctrl + C 를 눌러서 프로세스 종료시킬 수 있다. 주요 시그널 * 시그널 종류와 각 시그널에 따른 기본 동작이 미리 정해져 있음 - SIGKILL: 프로세스를 죽여라(슈퍼관리자가 사용하는 시그널로, 프로세스는 어떤 경우든 죽도록 되 어 있음) - SIGALARM: 알람을 발생한다 - SIGSTP: 프로세스를 멈춰라(Ctrl + z) - SIGCONT: 멈춰진 프로세스를 실행해라 - SI..