Chapter 07. 파일 및 레코드 잠금 리눅스 프로그래밍 원리와 실제 - 창병모 교수님 7.1 파일 잠금 1) 파일 및 레코드 잠금의 필요성 - 프로세스 사이에 데이터는 한 프로세스가 파일에 쓴 내용을 다른 프로세스가 읽음으로써 데이터를 주고받을 수 있음 - 문제점 한 프로세스가 파일 내용을 수정하는 동안에 다른 프로세스가 그 파일을 읽는 경우 두 개의 프로세스가 하나의 파일에 동시에 접근하여 데이터를 쓰는 경우 - 잠금(lock): 한 프로세스가 그 영역을 읽거나 수정할 때 다른 프로세스의 접근을 제한 잠근된 영역에 한 번에 하나의 프로세스만 접근 특히 레코드 쓰기(혹은 수정)를 할 경우 대상 레코드에 대해 잠금을 해서 다른 프로세스가 접근하지 못하게 해야 함 접근하는 프로세스 A가 대상 레코드에 ..
Chapter 05. 파일 입출력 리눅스 프로그래밍 원리와 실제 - 창병모 교수님 5.1 시스템 호출 1) 컴퓨터 시스템 구조 - 하드웨어는 CPU, 메모리, 저장장치, 주변장치 등으로 구성 - 운영체제는 하드웨어를 운영 관리하는 시스템 소프트웨어이며 유닉스/리눅스의 경우 커널(kernel)이 하드웨어를 운영 관리 - 운영체제 서비스 프로세스 관리 파일 관리 메모리 관리 통신 관리 주변 장치 관리 2) 시스템 호출 - 시스템 호출(system call): 운영 체제가 제공하는 서비스에 대한 프로그래밍 인터페이스 - 시스템 호출은 커널에 서비스를 요청하기 위한 프로그래밍 인터페이스로 응용 프로그램은 시스템 호출을 통해서 커널에 서비스를 요청 가능 3) 시스템 호출 구현 주요 자원 시스템 호출 파일 open..
# 재귀 호출의 개념 - 재귀 호출: 함수가 실행 중에 자기 자신을 다시 호출하는 상황 - 종료 조건을 가지는 동일한 task가 반복될 때 가능 // 종료 조건: 함수가 끝나야하기 때문에 필요 > 종결 조건은 재귀 호출에 반드시 포함되어야하며 잘못 설정할 경우 프로그램이 무한 반복에 빠질 수 있음 - 시스템 입장에서는 새로운 함수가 불리는 것과 같음 - 함수 실행 중 또 다른 함수가 실행되면 함수의 컨텍스트(context), 정보(지역변수, 복귀주소)를 활성 레코드(activation record)에 저장하여 보관하여야 함 - 활성 레코드는 함수의 환경 정보를 담고 있는 구조체이며 실행되는 함수마다 1개씩 생성되어 시스템 스택에서 저장 관리됨 - 시스템 스택은 함수 호출을 관리하기 위해 프로그램에서 사용..