본문 바로가기

운영체제

(7)
[OS] 쓰레드(Thread)와 멀티쓰레딩(Multithreading) 📌 쓰레드(Thread)  쓰레드는 프로세스보다 가볍고 효율적이며, 커널은 여러 쓰레드를 동시에 실행하고 관리한다. Basic unit of CPU utilization 이며code, data, file 등 의 자원을 공유한다. 쓰레드는 TCB로 관리되며  TCB에는 쓰레드 id , 쓰레드의 상태 (running, waiting, ready) 등의 상태, stack pointer, program counter, pointer to PCB, 레지스터 셋이 있다.    그렇다면 프로세스 대신 쓰레드를 사용하는 이유와 장점은 무엇일까?  Responsiveness (응답성): 프로세스의 일부가 차단되었을 때에도 계속 실행할 수 있도록 해준다. 특히 사용자 인터페이스에 있어서 매우 중요한데, 사용자가 프로그램..
[OS] IPC(Inter Process Communication)와 종류 📌 IPC(Inter Process Communication) 란? IPC = 프로세스 간 통신을 뜻한다. 컴퓨터 시스템에서 프로그램은 혼자 독자적으로 수행될 수도 있고, 각자 독립적 메모리 공간을 지니고 다른 프로세스들에 의해 침범당하지 않도록 보호되고 있다. 따라서 프로세스는 원래 독립적이지만, 상황에 따라 프로세스끼리 협력해야 되는 경우도 발생하기 마련이다. 이럴 때 프로세스간 자원과 데이터를 공유할 수 있어야 하는데, 서로 간 통신을 위해 별도의 매커니즘이 필요하고, IPC라는 설비를 이용해 프로세스간 통신을 할 수 있게 된다. IPC 가 필요한 사례 ✔ 정보 공유(Information Sharing): 여러 사용자가 동일한 정보에 엑세스 할 필요가 있을 수 있다.✔ 가속화(Computation..
[OS] 프로세스 생성 및 운영 / 좀비 프로세스(Zombie Process) 와 고아 프로세스(Orphan Process) 📌 프로세스 생성 대부분 시스템 내의 프로세스들은 병행 실행될 수 있으며, 반드시 동적으로 생성되고 제거되어야 한다. 그러므로 운영체제는 프로세스 생성 및 종료를 위한 기법을 제공해야 한다. 실행되는 동안 프로세스는 여러 개의 새로운 프로세서들을 생성할 수 있는데, 생성하는 프로세스를 부모 프로세스라고 하고 새로운 프로세스는 자식 프로세스라고 부른다. 이 새로운 프로세스들은 각각 다시 프로세스들을 생성할 수있다. 이 때, CPU가 하나인 경우에 다양한 작업들이 병렬적으로 진행되는 것처럼 보이지만, 실제로는 병렬적으로 처리되는 것이 아니고 CPU는 여전히 한 번에 하나의 작업만을 처리하지만 동시에 작업을 처리한다. (병렬과 동시는 다름)      운영체제들은 프로세스식별자(pid)를 사용하여 프로세스들을..
[OS] 문맥 교환(context switch) 이란? 문맥 교환을 설명하기 앞서 프로세스 스케줄링과 스케줄링 큐에 대해 먼저 알아볼 필요가 있다. 📌 프로세스 스케줄링 프로세스 스케줄링이란 CPU를 사용하려고 하는 프로세스들 사이의 우선순위를 관리하는 일이다. 처리율과 CPU 이용률을 증가시키고 오버헤드/응답시간/반환시간/대기시간을 최소화시키기 위한 기법으로 CPU가 쉬지 않고 계속 열심히 일할 수 있도록 효율적인 계획을 잡아준다.  📌 스케줄링 큐프로세스 스케줄링의 일반적인 그림이 바로 밑 그림이다. 화살표는 시스템의 프로세스의 흐름을 나타낸다. 프로세스가 시스템에 들어가면 준비 큐에 들어가서 준비 상태가 되어 CPU 코어에서 실행되기를 기다린다. 이 큐는 일반적으로 연결 리스트로 저장된다. 준비 큐 헤더에는 리스트의 첫 번째 PCB에 대한 포인터가 ..
[OS] 프로세스와 PCB(Process Control Block) 📌 프로세스(Process)프로세스는 실행 중인 프로그램을 의미한다. 프로세스는 운영체제에 의해 관리되며, 독립적으로 실행되고 자원을 할당 받을 수 있는 단위이다. 운영체제는 프로세스들에게 적절히 자원들을 분배하여 여러가지 작업을 수행할 수 있게 한다. 📌 프로세스 구조프로세스를 실행시키기 위해서는 코드의 데이터를 메모리에 올려 실행시켜야 한다. 이때, 프로세스마다 고유한 가상 메모리 공간을 제공하며, 이 공간은 4개로 나눌 수 있다.  ① code 영역(Text Segment)내가 작성한 코드가 저장되는 공간으로, 코드는 컴파일 되어 0과 1로 변환된 기계어가 저장된다.② Data 영역(Data Segment)내가 작성한 코드에서 선언된 전역 변수, 정적 변수, 상수 등을 저장한다.초기화된 변수와 ..
[OS] 모놀리식 커널과 마이크로커널 + 레이어 구조 커널 현대의 운영체제와 같이 크고 복잡한 시스템은 적절하게 동작하고 쉽게 변경될 수 있으려면 신중히 제작되어야 한다. 일반적인 접근 방법은 한 개의 일관된 시스템보다는 테스크를 작은 구성 요소로 분할하는 것이다. 이들 모듈 각각은 시중이 정의된 인터페이스와 기능들을 가진 , 시스템의 잘 정의된 부분이어야 한다. 자신의 프로그램을 구성할 때 main 함수에 모든 코드를 배치하는 것 대신 로직을 여러 함수로 분리하고 매개 변수와 반환 값을 명확하게 표현한 다음 main함수에서 해당함수를 호출하는 것처럼 말이다. 📌 모놀리식 아키텍처  운영 체제에서 모놀리식 커널(Monolithic kernel)은 커널의 구조 및 설계 사상을 가리킨다. 단일형 커널이라고도 한다. 입출력 기능, 네트워크 기능, 장치 지원 등 운영..
[OS] 시스템 콜 (system call) 📌 system call이란? OS는 크게 커널모드와 사용자모드로 나뉘어 집니다.커널모드 : 모든 시스템 메모리 접근 가능. 모든 CPU명령 실행 가능사용자모드 : 사용자 애플리케이션 실행. 하드웨어 직접 접근 불가. System call 호출시 일시적으로 커널모드로 전환.커널모드에서 사용가능 하지만 유저모드에서는 사용하지 못하는 명령어들이 있는데 이를 Privileged Instruction이라고 한다.커널영역의 기능을 사용자 모드가 접근하게 도와주는 기능을 System call이라고 부릅니다..  📌  System call을 사용하는 이유?가장 큰 이유는 유저 애플리케이션(ex. 우리가 흔히 개발하여 실행하는 자바 애플리케이션)이 운영체제의 치명적인 데이터를 수정/삭제하는 권한을 막기 위해서 입니..