본문 바로가기
개발자 공부

[운영 체제] 신입 필수 기본기 1

by Dev_Hugh 2023. 11. 10.
728x90
반응형

OS (운영체제)

- OS는 하드웨어 자원을 관리하고 응용 프로그램과 하드웨어 사이를 중재하는 인터페이스를 의미한다.

 

커널

- 운영체제도 하나의 소프트웨어로 컴퓨터가 실행되고 어딘가에 메모리가 올라가야 실행된다. OS는 규모가 큰 프로그램으로 이 모든걸 메모리에 올라간다면 한정된 자원의 낭비가 심할것이다. 이에 OS의 핵심 부분은 항상 메모리에 올려두고 필요한 부분은 그때 그때 메모리에 올려 사용한다. 이 때 메모리에 상주하는 운영체제의 부분을 커널이라고 한다.

- 즉 커널이라 하는 항상 필요한 OS의 핵심 부분만을 메인 메모리에 적재하여 OS를 사용하게 한다.

 

프로세스(Process) VS 스레드(Thread)

- 프로세스는 실행중인 프로그램을 의미하는데 완전히 독립적이기 때문에 메모리 영역을 다른 프로세스와 공유하지 않는다. 프로세스는 최소 1개의 스레드를 갖고 있는데 이것이 메인 스레드다.

- 스레드는 프로세스 내에서 실행되는 흐름의 단위로 프로세스 내에서 Stack만 따로 할당받고 그 외의 메모리 영역을 공유하기 때문에 다른 스레드의 실형 결과를 즉시 확일할 수 있다.

 

Multi Thread와 Multi Process 차이

- 멀티 프로세스는 하나의 프로세스가 죽더라도 다른 프로세스의 영향을 끼지치 않고 계속 실행되는 장점이 있지만 멀티 스레드보다 많은 메모리 공간과 CPU 시간을 차지한다는 단점이 있다.

- 멀티 스레드는 멀티 프로세스 보다 적은 메모리 공간을 차지하고 컨텍스트 스위칭이 빠르다는 장점이 있으나 하나의 스레드가 문제가 생기면 전체 스레드의 영향을 주어 동기화(Synchronization) 문제가 생기는 단점이 있다.

 

Quize) 크롬 브라우저에서 한 탭에 오류가 생기더라도 다른 탭에 영향을 끼치지 않는데 이는 멀티 프로세스기 때문이다.

 

Quize) 멀티 스레드 환경에서의 주의해야 할 점은?

A) 다수의 스레드가 공유 데이터에 동시에 접근할 때 동시성 문제 또는 교착 상태에 빠지지 않도록 주의해야 한다.

 

동기(Synchronization) VS 비동기(Asynchronization)

- 동기는 순차적으로 직렬적으로 Task를 수행하고 비동기는 병렬적으로 Task를 수행한다.

- ex) A함수가 B함수를 호출할 때 동기는 B함수의 결과를 A함수가 처리하고, 비동기는 B함수의 결과를 B가 처리하고 A에게 Call-Back으로 알려준다. -> 호출당한 함수의 종료를 누가 처리하느냐 차이

 

Context Switching

- 여러 프로세스를 처리해야 하는 상황에서 현재 진행중인 Task(프로세스 혹은 스레드)의 상태를 PCB에 저장하고 다음에 진행할 Task의 상태 값을 읽어 레지스터에 적재하는 과정을 의미한다

- 컨텍스트 스위칭을 통해 CPU의 사용률을 높일 수 있고 여러 프로세스를 처리할 수 있어 필요하다.

 

PCB (Process Control Block)

- 프로세스 제어 블록이란 프로세스를 관리하기 위한 정보를 포함하는 OS 커널의 자료구조다.

- OS에서 프로세스는 PCB로 표현되며 프로세스가 생성될 때마다 고유의 PCB가 생성되고 프로세스가 완료되면 PCB도 함께 제거된다.

 

!!!) WinAPI를 공부하면서 윈도우 프로시저 내에서 다양한 커널 오브젝트의 ID를 받는 구조체가 존재한다. 즉 PCB가 결국 커널 오브젝트임을 잊지 말자


신입으로서 CS는 알아야 한다 생각하여 전공 수업때 배웠던 내용도 떠올리고 다시 자료 찾아보면서 공부해봤다... 당시 운영체제 수업땐 매우 어려워했는뎈ㅋㅋ 지금도 조금은 어렵지만 이전에 비해 더 친숙하게 들리긴한다.

운영체제 수업 덕분에 지금 여찡구를 만났는데ㅋㅋㅋ

728x90
반응형

'개발자 공부' 카테고리의 다른 글

컴퓨터 메모리 저장 방식과 2차원 for문 관계  (0) 2023.12.14
프레임워크? 라이브러리?  (0) 2023.11.09
메모리 구조  (0) 2023.11.09
SOLID 원칙  (0) 2023.06.20