목록운영체제 (8)
나의 잡다한 노트 및 메모
1. UTC (Coordinated Universal Time)정의:UTC는 "협정 세계시"라고 하며, 전 세계에서 공통적으로 사용하는 표준 시간 체계입니다.특징:국제 표준: 전 세계의 시간대를 조정하는 기준이 됩니다.윤초(Leap Second): 지구 자전의 불규칙성을 보완하기 위해 때때로 1초씩 추가되거나 제거됩니다.표준화: ISO 8601 같은 국제 표준에 따라 날짜와 시간을 표현하는 기준으로 사용됩니다.컴퓨터와의 관련성:서버, 네트워크 장비, 그리고 운영체제는 보통 내부적으로 UTC를 기준으로 시간을 기록하고 관리합니다.사용자 인터페이스나 로그, 타임스탬프 등에서 각 지역의 시간대에 맞춰 변환하여 표시하기도 합니다.2. Unix Time (유닉스 타임 또는 Epoch Time)정의:Unix tim..
CPU 사용률이 낮다는 것은 해당 프로세스가 CPU 집약적인 작업을 수행하지 않고, 다른 리소스(I/O, 네트워크, 디스크 등)에 의존하고 있을 가능성이 높습니다. 몇 가지 주요 원인을 살펴보면:I/O-bound 작업:프로세스가 주로 파일 입출력, 네트워크 통신, 데이터베이스 쿼리 등 I/O 작업을 기다리는 경우, CPU가 작업을 수행할 필요 없이 대기 상태가 되어 CPU 사용률이 낮게 나타납니다.블로킹 호출:내부에서 블로킹 함수나 시스템 호출(예: sleep, lock 등)을 사용하면 CPU가 여유 있는 상황이 발생할 수 있습니다.싱글 스레드 작업:단일 스레드로 실행되는 경우, 멀티코어 환경에서 다른 코어에 비해 CPU 사용률이 낮게 보일 수 있습니다. 실제로는 CPU 코어 한 개만 사용하고 있을 수 ..
페이지 폴트는 가상 메모리(가상 주소와 실제 주소가 매핑됨)에 존재하지만 실제 메모리인 RAM에는 없는 데이터에 접근할 경우 발생하게 된다. 이때, 메모리에서 당장 사용하지 않는 영역을 하드디스크로 옮기고 하드디스크의 일부분을 메모리처럼 불러와 쓰는 것을 swapping 이라고 한다. 이를 통해 페이지 폴트가 일어나지 않는 것처럼 만든다. 그리고 과도한 페이지 폴트가 나타나게되면 Thrashing 이 발생하게 된다.Thrashing이란 운영체제의 가상 메모리 관리 과정에서, **과도한 페이지 부재(Page Fault)**가 발생하여 시스템 성능이 급격히 저하되는 현상이다.CPU가 실제 작업(프로세스 실행)을 거의 하지 못하고, 계속해서 페이지 교체 작업(디스크 스왑)만 반복하는 상태에 빠지는 것을 의미한..
Unix Domain Socket은 동일한 호스트에서 실행 중인 프로세스 간 통신(Inter-Process Communication, IPC)을 지원하기 위한 소켓 통신 방식입니다. 일반적으로 네트워크 소켓(TCP/IP)을 사용하는 것과 달리, Unix Domain Socket은 동일한 운영 체제 내에서만 작동하며, 네트워크 스택을 거치지 않으므로 더 빠르고 효율적입니다.1. Unix Domain Socket의 특징1.1 파일 시스템 기반Unix Domain Socket은 파일 시스템의 소켓 파일(예: /tmp/my_socket)을 통해 통신합니다.소켓 파일은 특별한 유형의 파일로, 프로세스가 소켓에 데이터를 읽거나 쓰면 다른 프로세스가 이를 받을 수 있습니다.1.2 빠른 통신네트워크 스택(TCP/IP)..
일단 IPC ( Inter-Process Communication ) 에는 공유메모리, 소켓, 파이프, DBus, 메세지 큐 등이 있다. 1. IPC 방식에 따른 속도 비교1.1 공유 메모리(Shared Memory)속도:공유 메모리는 가장 빠른 IPC 방식 중 하나입니다.이유는 두 프로세스가 동일한 물리적 메모리 영역을 직접 액세스하기 때문입니다.메모리 접근 속도는 나노초(ns) 수준입니다.사용 사례:대량의 데이터 전송이 필요할 때.고성능 실시간 애플리케이션(예: 멀티미디어, 고속 트레이딩 시스템).제약:동기화(뮤텍스, 세마포어)가 필요하며, 이를 잘못 관리하면 경쟁 조건이나 데드락 문제가 발생할 수 있음.1.2 파이프(Pipes)속도:파이프는 메모리 기반 버퍼를 사용하여 데이터를 전달합니다.일반적으로..
클라이언트가 소켓을 열 때, OS가 자동으로 사용 가능한 포트 중 하나를 임시 할당한다.보통 30000번대나 40000번대 포트를 이와 같은 용도로 사용한다.서버 쪽은 미리 정해진 포트를 Listen하고 있지만, 클라이언트 쪽 포트는 “사용 가능한 임의 번호”로 열리는 것이다. 이때 “클라이언트 포트”를 일일이 포워딩하지 않아도, 라우터(NAT)가 “(외부IP:서버포트) ↔ (내부IP:서버포트)”를 매핑해주는 규칙만 있으면, 클라이언트 쪽 임시 포트는 자동 관리됩니다. 결국, “IP:39068” 같은 출발지 포트는 클라이언트 OS/NAT 레벨에서 자동 할당된 것이고, 서버에서는 그 포트를 Listen하지 않습니다. 서버(또는 라우터)는 도착지 포트만 포워딩 규칙에 맞추어 열어주면, 양방향 통신이 이루어집..
시스템 콜 처리 과정은 소프트웨어 시스템에서 사용자 프로그램이 OS와 상호작용하여 특정 작업을 수행하는 과정이다. 운영체제에서 제공하는 서비스에 접근할 때 사용되며, 일반적으로 하드웨어 자원에 접근하거나 메모리 관리, 프로세스 관리 등의 운영 체제 기능을 수행하는 데 사용된다. 시스템 콜 처리 과정 1. 사용자 프로그램에서 시스템 콜 함수 호출 호출한다. 시스템 콜 함수는 보통 C 라이브러리 함수 형태로 제공되며, 시스템 콜 번호와 인자 값을 인자로 받는다. 2. 사용자 모드에서 커널 모드로 전환 CPU는 현재 실행 중인 사용자 모드에서 커널 모드로 전환된다. 이 과정에서 CPU는 특권 명령어(Privileged instruction)를 사용하여 운영 체제에게 제어권을 넘긴다. 3. 시스템 콜 번호와 인..
fork() 부모 프로세스가 자식 프로세스를 만드는 시스템 콜. 자식 프로세스는 부모 프로세스의 데이터를 모두 복사해서 가지고 있는다. fork가 실행된 이후부터 자식 프로세스는 실행을 하게 된다. 리턴값으로 pid가 나오는데 이때 0이면 자식프로세스이고 0보다 크다면 부모 프로세스이다. 헤더 파일은 함수 원형 : pid_t fork(void) // pid도 pid_t로 선언해야함. exec () 이 시스템콜을 호출한 현재 프로세스 공간의 TEXT, DATA, BSS 영역을 새로운 프로세스의 이미지로 덮어씌운다. 별도의 프로세스 공간을 만들지 않는다. 이 말이 뭐냐면 프로세스 안에서 exec() 실행을 하면 새로운 프로세스를 만드는게 아니라 현재 만들어진 exec 인자에 들어가 존재하는 프로그램 실행 파..