
창병모, 리눅스 프로그래밍 원리와 실제(생능출판, 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 파일 파일 열기와 파일 디스크립터 - 파일 디스크립터는 ..

창병모, 리눅스 프로그래밍 원리와 실제(생능출판, 2022) 4.1 파일 및 파일 포인터 - 파일을 사용하기 위해서 응용 프로그램은 위 그림처럼 시스템 호출을 통해 필요할 때마다 커널에 서비스 요청 가능 - 하지만 파일을 보다 쉽게 사용하는 방법은 C언어가 제공하는 표준 라이브러리 함수를 사용하는 것 파일 - C 파일은 위 그림처럼 모든 데이터를 연속된 바이트 형태로 저장하는데 저장된 데이터에 따라 텍스트 파일과 이진 파일로 구분할 수 있음 텍스트 파일(text file) - 문자들만으로 이루어진 파일 - 한글, 영문, 숫자 등의 문자들을 포함 - 여러 개의 줄로 이루어지며 매 줄마다 \n을 포함 이진 파일(binary file) - 모든 데이터를 컴퓨터 내부의 이진수 표현 그대로 저장한 파일 - 이미지..

창병모, 리눅스 프로그래밍 원리와 실제(생능출판, 2022) 3.1 C 언어 요약 C 프로그램 구성 - 여러 개의 .c 파일로 구성 - 함수 외부에서 전역 변수(global variable)를 선언 가능, 전역 변수는 프로그램 내에 어디서나 사용 가능 이차원 배열 자료형 배열명[N][M] : 크기가 N X M인 이차원 배열 선언 포인터와 포인터 변수 포인터 : 메모리 공간의 주소 포인터 상수 : 메모리 주소 값 포인터 변수 : 주소 값(포인터)을 저장할 수 있는 변수로 다른 메모리 공간을 가리킴 - *p는 포인터 p가 가리키는 곳을 따라가 데이터가 저장도니 공간 참조

창병모, 리눅스 프로그래밍 원리와 실제(생능출판, 2022) 2.1 기본 명령어 날짜 및 시간 확인 - date 시스템 정보 확인 - hostname : 호스트 이름 - uname : 운영체제 확인 사용자 정보 확인 - whoami 디렉터리 내용 확인 - ls 패스워드 변경 - passwd 화면 정리 - clear 2.2 디렉터리 디렉터리 계층구조 * 리눅스의 디렉터리는 루트로부터 시작하여 계층구조를 이룸 디렉터리 사용 홈 디렉터리 - 현재 내가 사용하는 디렉터리 ex) /home/jeong pwd : 현재 작업 디렉터리 mkdir : 디렉터리 만듬 cd : 작업 디렉터리 이동 경로명 절대 경로명(absolute path name) : 대상 파일이나 디렉터리까지의 경로 이름을 루트 디렉터리로부터 시작 상..