실행중인 프로그램을 저장하는 메모리로 주기억장치라고도 불리며, 휘발성이다. RAM은 코드와 데이터를 저장하고 있는데 이들은 주소를 가지기 때문에, 주소를 통해 데이터에 접근이 가능하다.RAM은 크게 SRAM과 DRAM으로 나뉜다. SRAM은 1비트당 트랜지스터 4개를
컴퓨터의 사용을 위해 필수적인 존재로, 하드웨어 자원을 관리하고, API나 시스템 호출을 통해 프로그램을 위한 서비스를 제공하며, 사용자와 하드웨어 사이에 인터페이스로서 동작하는 소프트웨어의 일종이다.과거에는 이런 고도한 기술보다는 단순히 프로그램을 메모리에 적재시키고
실제 메모리보다 더 큰 프로세스를 실행하고, 프로세스의 데이터를 보호하기 위해 도입한 방식이다. 요구 페이징(Demand Paging)방식을 사용한다.각 프로세스마다 가상 메모리 공간과 물리 메모리 공간을 페이지 단위(4KB)로 나누고, CPU에서 그 프로세스의 페이지
컴퓨터를 처음 부팅하면 커널이 메모리에 적재됨.이후 커널은 계속 적재되어 있고, 응용 프로그램이 시스템 호출로 하드웨어 자원을 요청하면 커널이 서비스를 제공함RAM보다 큰 프로그램 실행하고 싶을 때사용하는 부분만 메모리에 적재하고, 나머지는 HDD의 Swap Area에
프로세스의 모든 데이터는 메모리에 적재되어있고 메모리로의 접근은 가상 주소를 통해 이루어진다. 메모리의 주소공간은 여러 세그먼트로 분할된다. Code: 프로그램 로직이 들어간 바이너리가 저장(0,1로 구성된 코드) int main(void) {printf("Hello
Linux는 프로세스에게 시스템 호출로 서비스를 제공하기 위해 존재한다. 리눅스는 Unix-Like OS이지만, 유닉스는 아니다. 또한 POSIX 기능을 많이 지원하지만, 인증을 받지는 못했다.POSIX(Portable Operating System Interface)
리눅스 파일 시스템 저장장치에 파일 형태로 데이터를 저장하는 운영체제 내부의 코드로, 디스크의 파티션마다 다른 파일 시스템을 사용한다. 리눅스는 보통 ext4 파일시스템을 사용하는데 Root 파일 시스템 단 1개에서 시작되어야 함. 다른 파일 시스템은 Root 파일시스
리눅스 부팅레벨(Runlevel) /etc/inittab에서 어떤 level로 실행할 것인지 결정 /etc/rc[0-6]에 runlevel 파일이 저장되어 있음 Runlevel 변경 : $ init [0-6] |Level|Mode| |:----:|:----:| |
함수 단위로 실행시간에 차지하는 비율을 계산하여 실행시간이 긴 함수 최적화최적화도구C++의 ProfilerLinux의 gprofIntel의 Vtune정수로 계산 후 마지막에 나눗셈을 통한 실수화int보단 unsigned int, 자주사용하는 변수는 register 키워
저장장치에 파일 형태로 데이터를 저장하는 운영체제 내부의 코드로, 디스크의 파티션마다 다른 파일 시스템을 사용한다. 파일에 이름을 부여하고. 디스크의 파일위치를 기록해둔다.응용프로그램이 운영체제에 파일을 요청하면 파일시스템을 통해 파일을 찾아 반환한다.리눅스는 최대 4
파일 입출력 함수들은 응용 프로그램이 시스템 호출을 통해 직접적으로 운영체제에 서비스를 받도록 한다.man page의 (2)라고 표시된 함수들은 모두 System Call 함수이고, 운영체제의 시스템 콜 인터페이스에 정의가 되어있다.int open(const char
응용프로그램이 시스템 호출로 운영체제에 파일을 요청 시 계속 검사를 해야하는 과정이 있기 때문에, 자주 하는건 시스템 성능을 저하시킴. 따라서 라이브러리를 만들고, 라이브러리의 함수를 호출하여 Library Buffer에서 데이터를 받아오는 것이 좋다.따라서 C언어에서
메모리 버퍼에 흩어져있는 데이터를 한번에 모아서 파일에 write하거나, 파일에서 읽어온 데이터를 흩어져있는 버퍼에 전달함.분산된 자료를 쉽게 입출력할 수 있다.다수의 선형 입출력을 하나의 벡터 입출력(시스템 호출)으로 연산할 수 있다.흩어진 자료 입출력이 원자적으로
디스크의 Seek Time을 최소화 하기 위해 순서를 조작하여 탐색횟수와 서비스 시간을 최소화 하는 것.인접한 요청들을 하나의 요청으로 병합입출력 요청을 오름차순으로 정령읽기는 요청 즉시 서비스되어야 하는 반면에, 쓰기는 버퍼 캐시에 데이터를 모아두고 처리할 수 있기
stat 구조체파일의 메타데이터를 가지고있는 구조체mode_t st_mode파일 형태 검사하는 매크로, 해당하면 1, 아니면 0 반환권한 관련 매크로 - R/W/X디렉토리에 대하여 read는 디렉토리 안 파일명을 읽을 수 있고, write는 디렉토리에 파일 생성 및 제
디렉토리 엔트리: 자신이 가진 파일이나 디렉토리의 목록디렉토리 내에 존재하는 파일이나 서브디렉토리를 (Inode, 파일명)의 테이블 형태로 구성함.dir에 execute 권한이 없다면 하위 디렉토리로 넘어갈 수 없다.트리 형태로 저장된다.디렉토리 파일에 대한 수정은 커
파일에 대해 이벤트가 발생하면 알려주는 기능, 운영체제 자체가 inotify 기능을 가져야만 실현이 가능하다.int inotify_init(void) inotify 객체 생성 후, 해당 fd 반환inotify fd는 read하면 이벤트 올 때까지 잠들어있음.int in
실행 중인 프로그램으로 자원을 소유할 수 있고, 상태를 가진다.프로세스 ID특정 시점에서 프로세스가 가지는 유일한 식별자. 보통 순차적으로 할당된다.swapper process(idle process, 0번 pid) = 실행될 프로세스가 없을 때 커널이 실행하는 프로세
프로세스에서 사용 가능한 자원 중 가장 기본적인 핵심자원. 할당, 자원, 반납 등의 메모리 자원 기법 설명각 프로세스는 독립적인 크기의 가상 주소를 가짐(32비트CPU는 2^32바이트만큼)운영체제의 소프트웨어와 CPU내부의 가상메모리 소프트웨어가 구현가상 주소 공간의
프로세스간의 신호를 주고 받거나 정보 공유, Kernel에 의해 지원Signal, Pipe, Message Queue, Shared Memory, Semaphore프로세스간의 신호를 전달, 프로세스간 Signal로 동기화 및 정보 전달 시 이용시그널 무시(ignore)
한 프로세스의 표준 출력을 다른 프로세스의 표준 입력에 연결하여 부모/자식 또는 동일한 부모의 두 자식 프로세스 간 통신을 함.프로세스간 단방향 통신의 방법(양방향을 위해서는 pipe 2개 사용해야함)동기화를 제공가상 메모리에 만들어지는 가상 파일이다.가득 차거나 비어
메세지를 저장하는 연결리스트 큐, 큐에는 독립적인 ID가 있다.long mtype: 수신 메세지 타입. type에 숫자를 지정함으로써 우선순위 지정 가능메세지 큐는 사용이 끝나면 전송 프로세스와 수신 프로세스에 송수신 완료여부 물은 뒤, msgctl(msqid, IPC
관련이 없는 다수의 프로세스가 공유하는 메모리 영역. 효율적인 데이터 전달 방법.한 프로세스가 공유메모리에 데이터 기록하면, 다른 프로세스가 즉시 기록한 내용 읽을 수 있다.데이터 기록을 확인하기 위한 동기화는 프로그래머가 해결shmget()으로 공유 메모리 생성 후
여러 프로세스가 도시에 접근을 제어하기 위한 카운터세마포어 초기값을 설정(1, 2 등): 이는 동시에 접근 가능한 프로세스 수를 의미세마포어 획득 시도를 할 때, 현재 값이 양수라면 1감소하고 자원 사용. 0 이하이면 양수일 때까지 sleep. 깨어나면 재시도자원 사용
현실세계의 시간과 날짜프로세스가 main부터 실행하면서 걸린시간. 사용자 영역과 커널 영역에서 소비한 시간의 합사용자 영역: main함수 등 앞에서 실행되는 코드들에 걸린 시간커널 영역: 시스템 호출로 인한 내부적인 처리에 걸린 시간시스템 부팅 후 단조적으로 증가하는