본문 바로가기
반응형

CS 지식/시스템 프로그래밍4

Assembly(어쌤블리어)의 기초 Machine Code:머신 코드는 프로세서가 실행하는 바이트 수준의 프로그램입니다. 이는 0과 1로 구성된 이진 형식으로, CPU가 직접 이해하고 수행할 수 있는 명령어들로 구성되어 있습니다. 각 명령어는 특정 작업을 수행하도록 설계되어 있으며, 메모리에서 특정 위치에 저장됩니다.Assembly Code:어셈블리 코드는 머신 코드를 텍스트 형식으로 표현한 것입니다. 이는 인간이 읽고 쓰기 쉬운 형태로, 각 머신 코드 명령어에 대해 기억하기 쉬운 기호(레지스터, 메모리 주소, 명령어 이름 등)를 사용합니다. 어셈블리 코드는 어셈블러라는 프로그램에 의해 머신 코드로 변환됩니다.  “Integer” data of 1, 2, 4, or 8 bytes:정수 데이터는 1, 2, 4 또는 8 바이트 크기로 표현되며.. 2024. 10. 18.
[C언어] Signal 프로그래밍에서의 Race Condition과 해결법 시그널 프로그래밍에서의 Race Condition과 해결법시그널은 비동기적으로 동작하기 때문에, 잘못 설계된 시그널 핸들러는 Race Condition을 유발할 수 있다. Race Condition은 여러 흐름(프로세스나 스레드)이 공유 자원에 동시 접근하면서 예상치 못한 동작을 초래하는 문제를 말한다. 본 글에서는 시그널 핸들러로 인해 발생할 수 있는 Race Condition의 원리, 해결 방법, 그리고 관련 코드를 중심으로 자세히 설명한다.Race Condition의 발생 관련 개념Race Condition은 다수의 흐름(프로세스나 스레드)이 공유 자원에 동시에 접근하거나 수정하려고 할 때 발생할 수 있는 문제를 말한다. 이를 방지하려면 공유 자원에 대한 Critical Section(임계영역)을 .. 2024. 10. 17.
[C언어] Signal 프로그래밍 개념과 예제 시그널 프로그래밍의 이해시그널은 운영체제가 프로세스 간 통신을 위해 제공하는 비동기적 메시지 전달 메커니즘이다. 시그널은 프로세스에 특정 이벤트가 발생했음을 알리거나 작업을 중단하도록 요청하기 위해 사용된다. 이 글에서는 시그널의 동작 원리, System V와 POSIX 표준에 기반한 시그널 프로그래밍, 그리고 운영체제와 시그널의 관계를 자세히 설명한다.시그널의 기본 개념시그널의 정의시그널은 정수로 표현되는 작은 메시지로, 특정 이벤트를 알리기 위해 사용된다. 프로세스는 시그널을 받으면 이를 처리하거나 무시한다.시그널의 주요 상태Pending: 시그널이 도착했지만 아직 처리되지 않은 상태.Blocked: 프로세스가 시그널을 처리하지 않고 차단한 상태.Not Queued: 동일한 시그널이 여러 번 발생해도.. 2024. 10. 17.
[c언어] 멀티 프로세스 프로그래밍 멀티프로세스의 이해멀티프로세스는 운영 체제에서 하나의 프로그램이 여러 개의 프로세스를 생성하여 병렬 작업을 수행하는 기법입니다.프로세스와 시스템 호출프로세스는 실행 중인 프로그램의 인스턴스입니다. 멀티프로세스를 구현하기 위해서는 프로세스를 생성하거나 관리할 수 있는 시스템 호출이 필요합니다. 아래는 주요 시스템 호출입니다:fork(): 현재 프로세스(부모 프로세스)의 코드를 복제하여 자식 프로세스를 생성합니다. 반환값은 부모와 자식에서 다르게 동작합니다:부모: 생성된 자식 프로세스의 PID 반환자식: 0 반환exit(int status): 현재 프로세스를 종료하고 상태 코드를 반환합니다.getpid(): 현재 프로세스의 PID를 반환합니다.getppid(): 현재 프로세스의 부모 프로세스 PID를 반환합.. 2024. 10. 17.