System Programming/Operating System
[OS] I/O처리 방식: Non-Blocking
논 블로킹 모드로 프로그래밍을 한다는 것은 먼저 블로킹의 의미 부터 명확히 해야한다. 일반적으로 블로킹은 "운영체제(커널)에게 어떤 요청을 하고 결과를 운영체제가 알려줄 때까지 기다린다" 를 의미한다. 예를 들어 데이터베이스 서버에 요청하고 그 결과를 데이터베이스 서버가 알려줄 때까지 기다린다도 같은 얘기이다.블로킹: 프로그램이 운영체제(커널) 또는 외부 서비스(DB, 네트워크 등) 에 요청을 보내고, 해당 요청의 결과가 반환될 때까지 대기(멈춤) 하는 상태. connect() 를 호출하면 보통은 운영체제가 원격 서버와 연결하고 그 결과를 알려준다. 연결하는데 지연가능한 시간은 1초 이내, 수초 또는 수분이 될 수 있다. 하나의 연결을 위해 이를 수행하는 프로세스는 장시간을 대기(블로킹)할 수 있으며 그..
[C/interrupt] IRQs: Hardware, Software
장치들은 처리할 작업이 준비되었음을 컴퓨터 시스템의 다른 부분에 알리기 위해 여러가지 방법을 사용한다.하드웨어와 소프트웨어 간의 비동기 통신을 효율적으로 처리하기 위해 IRQ가 필요하다. IRQ는 하드웨어 장치에서 이벤트가 발생했을 때 CPU가 이를 처리하도록 알려주는 역할을 한다. IRQ 정보를 확인하기 위해 다음 명령어를 사용할 수 있다.$ cat /proc/interrupts또는$ mpstat -A handle_IPI는 ARM 아키텍처에서 다중 프로세서 간 인터럽트(IPI)를 처리하는 함수이다.void handle_IPI(int ipinr, struct pt_regs *regs){ switch (ipinr) { case IPI_TIMER: tick_receive..
linux에서 process 간 통신 #1 program and process
운영체제의 근본 개념 중 하나는 프로세스이다. 프로세스는 운영체제에 의해 스케쥴링 되고 제어되는 동적 entity이다.추상적으로 프로세스는 실행 중인 프로그램, 현재 값, 상태 정보, 운영체제가 프로세스를 관리하는 데 사용하는 리소스로 구성된다.Linux와 같은 Unix 기반 운영체제에서 특정 시점에 여러 프로세스가 동시에 실행되고 각 프로세스는 독립된 환경에서 모든 시스템 리소스에 접근하고 제어할 수 있는 것으로 보이지만, 실제로 어느 한순간에 단일 프로세스만이 실행되고 있다.현재 실행 중인 프로세스를 빠르게 전환(context switching)함으로써 운영체제는 동시 프로세스 실행이 이루어지는 것처럼 보이게 한다. 멀티 프로그래밍(멀티 태스킹) : os가 여러 실행단계에 있는 프로세스들 간에 자원을..