
창병모, 리눅스 프로그래밍 원리와 실제(생능출판, 2022) 8.1 쉘과 프로세스 쉘 쉘 : 사용자와 운영체제 사이에 창구 역할을 하는 소프트웨어 - 사용자로부터 명령어를 입력받아 이를 처리하는 명령어 처리기(command processor) 역할 수행 - 쉘은 사용자와 운영체제 사이에 창구 역할을 하는 소프트웨어로 사용자로부터 명령어를 입력받아 이를 처리 명령어 실행 - 쉘은 사용자가 입력한 명령어를 실행하기 위해 새로운 자식 프로세스를 생성해 입력한 명령어 실행 - 자식 프로세스가 입력된 명령어를 실행하고, 쉘은 자식 프로세스 실행을 끝날 때까지 기다림 - 자식 프로세스 실행이 끝나면 기다렸다가 다시 쉘 프롬프트 출력하고 다음 명령어 기다림 명령어 열(command sequence) : 여러 명령어 ..

창병모, 리눅스 프로그래밍 원리와 실제(생능출판, 2022) 7.1 파일 잠금 파일 및 레코드 잠금의 필요성 - 여러 프로세스가 하나의 파일에 동시에 접근할 때 문제점 - ex) 수정하는 순서에 따라 데이터 바뀜 ➡ 한 프로세스가 파일의 일부 혹은 전체 영역을 읽거나 수정할 때 다른 프로세스의 접근을 제한하기 위해 그 영역에 잠금(lock)을 하는 것 - 접근하는 프로세스 A가 대상 레코드에 잠금을 하는 경우 - 수행 후 프로세스 B가 대상 레코드를 접근하려고 하면 해당 레코드는 이미 잠금 상태이기 때문에 프로세스 A가 잠금을 풀 때까지 기다려야 함 Q. 파일 전체에 대해 잠금을 하지 않고 레코드 잠금을 하는 이유 - 많은 사용자들이 동시에 접근해 하나의 파일을 조작해야 하는경우, 파일 전체를 잠금하면 ..

창병모, 리눅스 프로그래밍 원리와 실제(생능출판, 2022) 6.1 파일 시스템 파일 시스템 구조 부트 블록(Boot block) - 파일 시스템 시작부 위치, 첫 번째 섹터 차지 - 유닉스/리눅스가 처음 시작될 때 사용되는 부트스트랩 코드 저장되는 블록 슈퍼 블록(Super block) - 전체 파일 시스템 대한 정보 저장 - 파일 시스템 내의 총 블록 수, 사용가능한 i-노드 개수, 사용 가능한 블록들을 나타내는 비트 맵, 블록의 크기, 사용 중인 블록 수, 사용 가능한 블록 수 i-리스트(i-list) - 각각의 파일을 나타내는 모든 i-노드들의 리스트 - 한 블록은 약 40개 정도의 i-노드 포함 데이터 블록(Data block) - 파일의 내용(데이터)을 저장하기 위한 블록 i-노드와 블록 포인..

창병모, 리눅스 프로그래밍 원리와 실제(생능출판, 2022) 5.1 시스템 호출 컴퓨터 시스템 구조 - 하드웨어는 CPU, 메모리, 저장장치, 주변장치 등으로 구성 - 운영체제는 하드웨어를 운영 관리하는 시스템 소프트웨어이며 유닉스/리눅스의 경우 커널(kernel)이 하드웨어를 운영 관리 운영체제 서비스 - 프로세스 관리 - 파일 관리 - 메모리 관리 - 통신 관리 - 주변장치 관리 시스템 호출 시스템 호출(system call) : 운영 체제가 제공하는 서비스에 대한 프로그래밍 인터페이스 - 시스템 호출은 커널에 서비스를 요청하기 위한 프로그래밍 인터페이스로 응용 프로그램은 시스템 호출을 통해서 커널에 서비스를 요청 가능 시스템 호출 구현 5.2 파일 파일 열기와 파일 디스크립터 - 파일 디스크립터는 ..