본문 바로가기
반응형

동기화4

[운영체제] OS의 동기화(Synchronization) 개념과 기법 종류 (lock, semaphore, deadlock, condition variables, monitor) - 락, 세마포어, 교착상태, 모니터 운영체제 Synchronization운영체제에서 Synchronization은 프로세스 간 자원 접근을 관리하고 일관성을 유지하기 위한 중요한 메커니즘이다. 여러 프로세스가 동시에 실행될 때 공유 자원에 대한 접근을 제어함으로써 데이터 무결성을 보장한다. Background프로세스는 동시에 실행될 수 있으며(concurrently), 언제든지 중단될 수 있어 부분적으로만 실행이 완료될 수 있다. 공유 데이터에 대한 동시 접근은 데이터 불일치를 초래할 수 있다. 데이터 일관성을 유지하기 위해서는 협력하는 프로세스들의 순차적 실행을 보장하는 메커니즘이 필요하다. 문제 예시로, 모든 버퍼를 채우는 생산자-소비자 문제의 해결책을 제공하고자 한다. 이를 위해 가득 찬 버퍼의 수를 추적하는 정수형 counter를 .. 2025. 5. 10.
[운영체제] OS의 프로세스(Process)의 개념과 구조, IPC 매커니즘 프로세스같은 프로그램을 실행하는 프로세스는 여러 개 있을 수 있다.프로그램의 종류Batch System: JobsTime Shared System: User Programs, TasksJob = Process프로세스는 실행 중인 프로그램이다.하나의 프로세스 실행은 순차적으로 진행되며, 레디 큐(Ready Queue)에 들어가 선택될 때까지 대기한다.프로세스의 내부 구성프로그램 코드: 텍스트 영역CPU 레지스터: 현재 프로세스의 실행 정보 (PC: 다음 명령 주소)Stack: 임시 데이터를 저장하는 공간 (액티베이션 레코드 포함)함수 파라미터, 반환값, 로컬 변수 포함Data Section: 전역 변수 및 static 변수Heap: 프로세스 종료 시까지 유지, 동적 메모리 할당 (malloc 등 시스템 콜.. 2025. 4. 13.
[C언어] pthread 라이브러리를 이용한 스레드 동기화 Threads Synchornization  Multi Thread에서 전역 변수, 힙 영역, malloc 등은 Data Sharing을 한다.다음 코드는 입력한 초만큼 전역 변수 cnt가 증가하는 예제이다.volatile: 컴파일러 최적화 방지. cnt 변수를 레지스터가 아닌 메모리에서 직접 읽고 쓰게 만듦volatile int cnt;void* do_loop (void *loop){ while(1) cnt++; return NULL;}int main(int argc, char *argv[]){ int status, sec; pthread_t thread_id; cnt = 0; sec = atoi(argv[1]); if (pthread_create(&threa.. 2025. 1. 28.
[C언어] 프로세스 간 통신 (IPC) 프로세스 간 통신 (IPC)1. 파이프 (Pipe)스트림 지향: 데이터를 순차적으로 단방향으로 전송하는 방식입니다.시스템 호출: pipe(), read(), write()를 사용하여 데이터 전송을 처리합니다.동작 방식: 파이프의 쓰기 끝에 데이터를 작성하면, 커널이 해당 데이터를 버퍼에 저장하고 읽기 끝에서 읽힐 때까지 유지합니다.FIFO 동작: First In First Out 방식으로 데이터를 처리합니다.2. 메시지 큐 (Message Queue)메시지 지향: 프로세스가 메시지를 쓰고 다른 프로세스가 읽는 형태입니다.특징: 메시지 큐는 메시지 식별자로 관리되며, 커널 내에서 메시지의 연결 리스트로 구현됩니다.메시지 순서: 메시지는 FIFO 방식으로 읽히지만, 비순차적으로도 메시지를 검색할 수 있습니다.. 2024. 10. 18.