기술면접/운영체제22 [운영체제] 프로세스와 스레드 차이 프로세스와 스레드의 차이 프로세스 현재 실행 중인 프로그램 메모리 위에 적재되어 cpu의 할당을 받을 수 있다. 동적 메모리인 힙을 할당받을 수 있다. 프로세스의 구조 text(code): 일반적인 코드 data: 변수 및 초기화된 데이터 stack: 임시 데이터(함수 호출 및 로컬 변수 등) heap: 코드 내에서 동적으로 생성되는 데이터 프로세스는 다른 프로세스의 자원에 접근할 수 없다. 역할에 따른 구분 사용자 프로세스 사용자 코드를 수행하는 프로세스 커널 프로세스 모든 메모리와 프로세스의 명령에 액세스할 수 있는 프로세스 실행 순서 제어 및 다른 프로세스의 접근 제어 사용자 프로세스 생성 프로세스의 상태 변화 New: 프로그램이 메인 메모리에 할당 Ready: 프로그램 초기화 등 모든 준비를 마친.. 2022. 2. 25. 운영체제 10장 가상메모리 페이지 교체 알고리즘 가상 메모리 물리 메모리의 한계를 극복하기 위한 기술 Demanding Paging 백업 공간을 두고 프로세스가 요구하는 필요한 페이지만 메모리 위에 올리는 것이다. 백업 공간과 메모리 사이의 스와핑이 발생하기 때문에 페이지 부재 시 지연이 발생한다. Prepaging 미리 사용될 것 같은 페이지를 메모리에 올려두는 방식이다. 그러나 페이지 부재가 발생할 때 많은 지연이 발생하게 된다. Page Fault 페이지 부재는 CPU가 접근하려는 페이지가 메모리 위에 없는 경우이다. 처리 과정 해당 페이지 확인 valid bit==0이면 cpu에 인터럽트 신호를 보내고 내부의 해당 ISR(인터럽트 서비스 루틴)- 인터럽트 핸들러가 관리하는 인터럽트 발생시 행동 루틴 - 로 간다. 디스크를 탐색해 페이지를 찾는다.. 2022. 1. 19. 운영체제 9장 정리 - 메모리 관리 메모리 관리 스와핑 일시적으로 메모리가 부족한 프로세스를 백업 저장소로 스왑하고 여유가 있을 때 메모리로 불러와 지속적인 실행이 가능하게 하는 것입니다. 하드 디스크를 통한 스왑 방식이기 때문에 상대적으로 속도가 느린 단점이 있습니다. 논리 주소와 물리 주소와의 차이 논리 주소는 물리적 주소와 매핑하는 주소로 CPU에 의해 생성된다. 물리 주소는 메모리 주소 레지스터에 의해서 실질적 할당되는 주소 체계이다. 논리주소를 물리적 주소로 매핑할 때 MMU를 활용한다. 고정 파티션과 가변 파티션의 차이 고정 파티션은 고정된 저장 공간을 가지는 것이며 가변 파티션은 초기 분할 이후에도 원하는 방식으로 분할할 수 있다. 그러나 고정 파티션은 메모리 사용이 비효율적이게 돼 내부 단편화가 발생할 수 있다. 불균일 사이.. 2022. 1. 19. 운영체제 8장 정리 데드락 DeadLock 교착상태 Dead Lock 교착상태 교착 상태란 다른 프로세스가 자원을 계속 해서 점유하고 기다리는 프로세스가 자원을 요구하는 과정에서 무한정으로 대기하는 것을 말합니다. 데드락 충족 조건 1. 상호 배제 자원을 여러 프로세스가 이용하려 할 때 2. 점유 대기 프로세스가 하나의 자원을 점유하면서도 다른 프로세스에 할당된 자원을 점유하려 할 때 대기를 안 할때 3. 비선점 다른 프로세스가 자원을 선점해서 빼았지 않을 때 4. 순환 대기 점유 대기 상태의 프로세스가 서로가 될 때 데드락의 해결 방법 1. 데드락 예방 상호 배제 - 하나의 자원은 하나의 프로세스만 이용하게 한다. 점유 대기 - 선점 스케줄링 방식의 프로세스가 자원 할당을 요청할 때 어떤 것이라도 자원을 놓을 수 있어야 한다. 비선점 - 공유 자원을 프.. 2022. 1. 19. 운영체제 6장 정리 동기화 Race Condition Mutex Lock Semaphore 동기화 필요한 이유 - 모든 프로세스들이 컨커런트하게 실행되어야 하기 때문이다. 언제라도 인터럽트되고 다시 실행될 수 있어야 한다. Race Condition (경쟁 상황)이란 두 개 이상의 프로세스가 공통 자원에 병행하게 접근하려고 할 때 생긴다. 생산자 소비자 문제 10개가 있다. 한정된 데이터를 임시로 저장해두는 버퍼에 여러 생산자와 소비자가 접근하려고 한다. 생산자는 물건이 만들어지면 해당 버퍼에 저장한다. 그러나 저장할 공간이 없는 문제가 발생할 수 있다. 또한 소비자가 데이터를 소비하려고 할 때 소비할 데이터가 존재하지 않는 문제가 있다. 임계 구역 문제 여러 개의 쓰레드,프로세스가 수행되는 시스템에서 공유되는 데이터에 접근할 때 발생하는 문제이다. 임계 구역 문제를 해결해야 경쟁 상황을 피할.. 2022. 1. 19. 운영체제 5장 정리 CPU 스케쥴링 CPU 스케줄링 및 디스패칭(DisPatching) CPU 스케줄러 큐 Job Queue : 현재 시스템 내에 있는 모든 프로세스 Ready Queue : 현재 메모리 내에 있고 실행되기를 기다리는 프로세스 Device Queue : Device I/O 작업을 대기하고 있는 프로세스 CPU 스케줄링의 단계 1. 장기 스케쥴러 - 메모리와 디스크 사이의 스케쥴링을 담당 프로세스에 메모리와 리소스 할당 2. 단기 스케쥴러 - CPU와 메모리 사이의 스케쥴링을 담당 Ready Queue에 있는 프로세스 중 어떤 프로세스를 실행 시킬지 담당. 3. 중기 스케쥴러 - 여유 공간 마련을 위해서 프로세스를 메모리에서 내보낸다 (SWAPPING) 메모리에 많은 프로세스가 올라가는 것을 관리하는 스케쥴러 CPU 스케줄링.. 2022. 1. 19. 운영체제 4장 정리 프로세스와 쓰레드 프로세스와 쓰레드의 차이 프로세스는 실행 중인 프로그램으로 디스크로부터 메모리에 적재되어 CPU 의 할당을 받을 수 있는 것을 말한다. 또한 프로세스는 프로세스 실행 중에 동적으로 할당되는 메모리인 힙을 포함한다. 쓰레드는 프로세스 내의 실행 단위이다. 한 프로세스 안에서 주소나 자원 공유들을 위해 CODE, DATA, HEAP을 공유하고 쓰레드마다 스택을 할당 받는다. 하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상시키는 것을 멀티스레딩 이라고 한다. 스택을 독립적으로 할당하는 이유는 각 쓰레드마다 독립적인 함수 수행이 가능해야 하기 때문에 최소한의 스택을 할당해 독립적인 함수 수행을 보장한다. (PC REGISTER 포함) 멀티.. 2022. 1. 19. 운영체제 3장 정리 메모리 메모리 안의 프로세스 구조 stack: 임시 데이터(함수 호출, 로컬 변수 등)가 저장되는 영역 heap: 코드에서 동적으로 생성되는 데이터가 저장되는 영역 data: 전역 변수/초기화된 데이터가 저장되는 영역 text(CODE): 컴파일된 소스 코드가 저장되는 영역 프로세스 상태 구조 Process Control Block(PCB) PCB 는 특정 프로세스에 대한 중요한 정보를 저장 하고 있는 운영체제의 자료구조이다. 프로세스를 관리하기 위해 프로세스의 생성과 동시에 고유한 PCB 를 생성 PCB에 저장되는 정보 프로세스 식별자(Process ID, PID) : 프로세스 식별번호 프로세스 상태 : new, ready, running, waiting, terminated 등의 상태를 저장 프로그램 카운터.. 2022. 1. 19. 운영체제 2장 정리 Opreating System Architecture 시스템 콜 application 단계에서 open()는 요청이 들어오게 되면 kernel 모드로 trap이라는 인터럽트를 걸고 해당 주소에 가서 open()을 열고 결과를 유저에게 주게 됩니다. 주소만 빠르게 레지스터를 통해 받게 됩니다. 유-커-유 링커와 로더의 역할 원천 코드에서 프로그램이 수행되는 과정 소스 프로그램 작성 컴파일러에 의해 .o 코드로 만들어진다. 여러 가지 오브젝트 파일을 링커로 연결을 시켜 실행할 수 있는 파일로 만든다. 실행할 수 있는 파일을 로더로 실행을 하게 된다. 레이어드 구조와 마이크로 커널 구조 레이어드 구조 레이어드 구조는 운영체제의 유지보수와 확장이 용이하고 보안적으로도 우수하지만 레이어 간 절차가 엄격해 효율이 떨어진다. 마이크로 커널 구조 마이크로 .커널 구조는 .. 2022. 1. 19. 운영체제 1장 정리 인터럽트 운영체제 운영 체제란 사용자의 편의성, 사용성을 위해 사용한다. 각각의 디바이스 컨트롤러들을 담당하고 통합적으로 관리해줘 사용자의 원할한 이용을 도와준다. 인터럽트 처리란 인터럽트는 컴퓨터 작동 시 예외 상황에서도 문제없이 작동을 할 수 있게 해주는 기능이다. 인터럽트가 없다면 폴링을 이용해야 하는데 효율이 상대적으로 떨어진다. Dual Mode Operation이란 운영체제는 유저 모드와 커널 모드가 있는데 프로그램들이 건들면 안되는 곳에 들어갈 수 없도록 하는 것이다. 운영체제에 활용되는 자료구조 리스트는 함수 호출과 함께 할당 및 소멸 스택은 멀티 태스킹을 위한 프로세스 스케쥴링 방식에 활용(우선순위 큐) 해시 테이블은 메모리 관리를 위한 자료 구조 트리는 바이너리 서치 트리를 이용해 탐색 시간을 .. 2022. 1. 19. 이전 1 2 다음