O/S

1. Address Binding? 하나의 프로그램이 실행되기 위해서는 프로그램 코드가 어셈블리어로 컴파일되고, 어셈블리어가 기계어로 변환되어 프로세스가 만들어져 메인 메모리에 적재되면 해당 프로세스의 명령어들은 Physical address를 가지게 된다. CPU가 메인 메모리에 적재된 프로세스 명령어를 실행하기 위해서는 Logical address를 알아야 하기 때문에 Physical address에 매핑된 Logical address를 알아내서 프로세스를 처리한다. 이때 Logical address와 Physical address를 매핑하는 과정이 바로 Address Binding이다. Symbolic address VSLogical address VS Physical address Symbolic..
1. Deadlock이란? 두개 이상의 프로세스나 스레드가 서로의 작업이 끝나기만을 기다리며 무한정 대기하며 자원을 얻지 못하는 상태. 2. Deadlock 해결 방법 Deadlock을 해결하는 방법은 간단히 아래와 같이 요약해볼 수 있다. 1. Deadlock 예방 : Deadlock이 발생하기 이전에 데드락 발생원인 중 하나를 제거함으로써 Deadlock을 예방하는 방법 2. Deadlock 회피 : 각 프로세스가 프로세스를 실행하는데 필요한 정보를 추가적으로 받아서 Deadlock을 일으키지않는다고 판단되면 자원을 할당해주는 방법 3. Deadlock 탐지 : 교착 상태가 발생했을 때마다 복구 기법을 활용하여 시스템을 회복시키는 방법. 4. Deadlock 무시 : 그냥 데드락이 일어날 때 까지 방..
1. 동기화 문제란? 여러 프로세스 또는 여러 스레드가 동시에 실행될 때 발생하는 데이터 일관성 문제를 동기화 문제라고 한다. 대표적으로 공유 메모리에 여러 스레드가 동시에 접근해서 값을 변경할 때 연산 결과 출력이 예상치 못한 값으로 나오는 공유 메모리 동기화 문제(Race condition)를 대표적인 동기화 문제로 볼 수 있다. 2. Race Condition / 경쟁 상태 여러개의 프로세스 또는 스레드가 하나의 공유 자원에 동시에 접근할 때 생기는 문제를 말한다. 아래 코드를 보면 스레드 두개를 선언하고 전역으로 선언한 sum이라는 변수에 스레드 두개가 동시에 접근하여 sum이라는 전역 변수에 값을 1씩 증가시키는 코드이다. 뇌버깅을 돌려보면 두개의 스레드에서 1씩 30000번씩 증가시키기 때문에..
1. CPU scheduling이란? CPU는 한번에 하나의 프로세스만을 수행할 수 있다. 여러개의 프로세스가 있어도 현재 CPU가 실행하고 있는 프로세스가 끝날때 까지 기다려야한다. 또한 I/O요청이 들어올 경우 CPU는 들어온 I/O요청이 끝날 때 까지 기다린 후 I/O가 끝나면 다시 실행된다. 즉, 다른 프로세스들을 실행하지 못하고 무한 대기하고 있기 때문에 대시 시간만큼 CPU를 낭비하는 것이다. 이를 해결하기 위해 멀티 프로그래밍 환경에서 CPU를 효율적으로 사용하기 위해 I/O요청이 오면 다른 프로세스한테 CPU를 양도하고 I/O가 끝나면 다시 Ready-queue에 들어가서 실행을 준비하고 실행하고 이런 CPU를 효율적으로 사용하기 위한 방법을 Scheduling이라고 한다. 2. CPU I..
1. IPC 란? 프로세스는 스레드와 다르게 독립적으로 실행된다. 이처럼 독립적인 자원을 가진 프로세스끼리 통신에 사용되는 기법을 IPC 라고 한다. 2. 생산자-소비자 문제(Producer-Consumer Problem) 생산자란 말 그대로 정보를 생산하는 역할, 소비자란 정보를 소비하는 역할이다. 이렇게 들으면 이해가 잘 안가기 때문에 예시를 들어보자면 1. 생산자 : compiler > 어셈블리 코드 생성 // 소비자 : assembler > 어셈블리 코드를 소비하여 기계어 변환 2. 생산자 : 웹 서버 > request시에 웹 페이지 HTML코드 생성 // 소비자 : 브라우저 > HTML코드를 소비해서 화면에 랜더링 함. 이정도가 대표적인 생산자-소비자에 대한 예시가 될 것 같다. 그래서 다시 생..
보글보글소다
'O/S' 태그의 글 목록