본문 바로가기

전체 글40

동기화 예제 동기화 예제고전적인 동기화 문제들동기화 방법들을 검증하는데 사용되는 동기화 문제들유한 버퍼 문제동기화 기본요소(뮤텍스, 세마포어 등)들의 능력을 설명하기 위하여 사용되는 문제다. 생산자 소비자는 다음과 같은 자료 구조를 공유한다.int n;semaphore mutex = 1;semaphore empty = n;semaphore full = 0;n개의 버퍼로 구성된 풀이 있으며, 각 버퍼는 한 아이템을 저장할 수 있다.mutex 이진 세마포어는 버퍼 풀에 접근하기 위한 상호 배제 기능을 제공하며 1로 초기화 된다.while(true) { /* 버퍼에 넣을 아이템 생성 */ ... wait(empty); wait(mut.. 2024. 12. 2.
동기화 도구들 동기화 도구들배경생산자 소비자 문제// 생산자while (true) { while (count == BUFFER_SIZE); buffer[in] = next_produced; in = (in + 1) % BUFFER_SIZE; count++;}// 소비자while (true) { while (count == 0); next_consumed = buffer[out]; out = (out + 1) % BUFFER_SIZE; count--;}생산자와 소비자 코드를 병행적으로 수행시키면 올바르게 동작하지 않는다. count 값이 5이고, 생산자 소비자가 count++, count--를 병행적으로 실행할 때 count의 값은 4,5,6이 될 수 있다. (올바른 값은 5).. 2024. 11. 9.
CPU 스케줄링 CPU 스케줄링기본 개념다중 프로그래밍의 목적은 CPU 이용률을 최대화하기 위해 항상 실행 중인 프로세스를 가지게 하는 데 있다. 다중 프로그래밍에서는 다수의 프로세스를 메모리에 유지하고, 어떤 프로세스가 대기해야 할 경우, 운영체제는 CPU를 그 프로세스로부터 다른 프로세스에 할당한다. 이러한 패턴은 계속된다. 이러한 종류의 스케줄링은 운영체제의 기본적인 기능이다.CPU-I/O 버스트 사이클프로세스들은 CPU 실행과 I/O 대기의 사이클을 반복한다.CPU 스케줄러CPU가 유휴 상태가 될 때마다, 운영체제는 준비 큐에 있는 프로스세 중에서 하나를 선택해 실행해야 한다. 선택 절차는 CPU 스케줄러에 의해 수행된다. 스케줄러는 실행 준비가 되어 있는 메모리 내의 프로세스 중에서 선택하여, 이들 중 하나에게.. 2024. 10. 24.
스위치 근거리 네트워크 스위치 근거리 네트워크스위치링크 계층에서 동작한다.링크 계층 프레임을 교환하고, 네트워크 계층 주소를 인식하지 않음링크 계층 프레임을 전달하기 위해 IP 주소가 아닌 링크 계층 주소를 사용한다.링크 계층 주소체계와 ARP호스트와 라우터링크 계층 주소를 갖는다.네트워크 계층 주소도 갖는다.MAC 주소링크 계층 주소를 가진 것은 호스트나 라우터가 아닌 호스트나 라우터의 어댑터(네트워크 인터페이스)다. 링크 계층 스위치는 호스트나 라우터를 연결해주는 인터페이스에 링크 계층 주소를 할당받지 않음링크 계층 스위치는 호스트와 라우터간에 데이터그램을 전달하는 일을 할 뿐이다.링크 계층 주소는 MAC 주소(MAC address)라고 알려져 있다.랜 주소(LAN address), 물리 주소(physical address.. 2024. 10. 7.
스레드와 병행성 스레드와 병행성개요스레드는 CPU의 기본 단위이다.스레드는 스레드 ID, 프로그램 카운터(PC), 레지스터 집합, 스택으로 구성된다.스레드는 같은 프로스세스에 속한 다른 스레드와 코드 섹션, 데이터 섹션, 운영체제 자원을 공유한다.동기현대의 컴퓨터와 모바일 기기에서 실행되는 대부분의 소프트웨어 어플리케이션들은 멀티스레드를 이용한다. 어플리케이션은 일반적으로 여러 스레드의 제어와 함께 별도의 프로세스로 구현된다. 스레드의 예시 웹 브라우저는 하나의 스레드가 이미지 또는 텍스트를 표시하고 다른 스레드는 네트워크에서 데이터를 검색하도록 할 수 있다. 웹 서버가 수천명의 클라이언트로부터 자원에 대한 요청을 받을 수 있다. 만약 웹 서버가 단일 스레드 프로세스로 동작한다면 한 번에 하나의 클라이언트만 자원을 응답.. 2024. 10. 4.
프로세스 프로세스의 개념프로세스란 실행 중인 프로그램을 말한다. 프로세스는 현대의 컴퓨팅 시스템에서 작업의 단위이다.프로세스프로세스의 현재 활동의 상태는 프로그램 카운터 값과 프로세서 레지스터의 내용으로 나타낸다. 프로세스의 메모리 배치는 다음과 같다.텍스트 섹션실행 코드데이터 섹션전역 변수힙 섹션프로그램 실행 중에 동적으로 할당되는 메모리스택 섹션함수를 호출할 때 임시 데이터 저장 장소(함수 매개변수, 복귀 주소 및 지역변수 등)텍스트 및 데이터 섹션은 고정되며 프로그램 실행 시간 동안 크기가 변하지 않는다. 스택 및 힙 섹션은 프로그램 실행 중에 동적으로 줄어들거나 커질 수 있다. 프로그램 그 자체는 프로세스가 아니다.프로그램명령어 리스트를 내용으로 가진 디스크에 저장된 파일과 같은 수동적인 존재프로세스다음에.. 2024. 9. 11.