일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- API
- pls-00103
- bean
- JSON
- Spring
- autowired
- CS
- 뷰
- JavaScript
- 깃허브에러
- 어노테이션
- https
- GIT
- Github
- 개발자기록
- vue
- react
- spring boot
- SQL
- Entity
- 프레임워크
- Spring Framework
- framework
- Java
- HTTP
- oracle
- REST API
- vue3
- error
- DTO
- Today
- Total
o-ohi-code 님의 블로그
[CS] 운영체제(Operation System) 란? 본문
운영체제(Operation System) 는 하드웨어와 소프트웨어 사이에서 중간 다리 역할을 하는 프로그램이다.
📌 컴퓨터를 사람이 쉽게 다루게 도와주는 컴퓨터의 관리자 프로그램
✅ 운영체제의 주요 역할
하드웨어 제어 : cpu, 메모리, 디스크, 입출력 장치 등 관리
자원 할당 : 어떤 프로그램에 얼마나 CPU, 메모리 줄지 결정
프로세스 관리 : 여러 프로그램이 동시에 돌아가도록 조정
메모리 관리 : 각 프로그램이 쓰는 메모리를 안전하게 관리
보안 & 권한 : 사용자/프로그램 접근 권한 제어
파일 시스템 : 파일 저장, 읽기, 쓰기 처리
✅ 프로세스(Process)
실행 중인 프로그램 한 개를 말해,
ex) 크롬, 카카오톡, VSCode 가 각각 하나의 프로세스
특징
- 메모리 공간을 가짐 : 자기만의 메모리(코드, 데이터, 스택 등) 가짐
- OS가 관리 : 각 프로세스는 OS가 실행 시켜줌
- 독립적 : 다른 프로세스와는 메모리 공간 공유 X
✅ 스레드 (Thread)
하나의 프로세스 안에서 실제로 일을 하는 실행 단위
ex) OS 입장에서 chrome.exe 하나가 실행 => 하나의 프로세스 생성
크롬 프로세스 안에 몇 개의 스레드 자동으로 생김
- UI 처리 스레드
- 렌더링 스레드
- 네트워크 요청 처리 스레드
- 자바스크립트 실행용 스레드 등..
✔ 한 프로세스 안에 여러 스레드를 만들면 > 멀티태스킹 가능
✔ 스레드는 메모리(코드, 합)를 공유하므로 속도는 빠르지만 동기화가 중요
✅ 스케줄링 (Scheduling)
CPU가 동시에 여러 작업(프로세스/스레드)을 처리할 수 없으니,
누구 먼저 실행시킬지 순서를 정하는 시스템
ex) FCFS (선입선출) : 먼저 온 작업 먼저 처리
RR (라운드 로빈) : 조금씩 돌아가며 번갈아 처리
✔ 개발자는 앱이 CPU 자원을 얼마나 차지하는지, 언제 돌아가는지 이해할 필요가 있다.
✅ 메모리 관리 (Memory Management)
여러 프로그램이 메모리를 나눠 쓰게 하면서, 안전하게 할당하고 회수 하는 기능
- 가상 메모리 : 실제 RAM 보다 큰 메모리 처럼 쓰게 해줌 (디스크 일부 사용)
- 메모리 보호 : 다른 프로그램의 메모리 침범 방지
- 할당/해제 : malloc(), new 같은 동작의 기반이 되는 메커니즘
✔ 메모리 누수, 과다 사용, GC 동작 원리 등은 이 개념을 기반으로 이해해야 한다.
✅ 동기화 (Synchronization)
여러 스레드가 공유 자원(CPU, 메모리 등)을 동시에 건드리지 않게 제어하는 기술
문제
race condition : 동시에 접근해서 결과가 꼬임 (은행 이체 중 동시 출금)
데드락 : 서로 자원을 기다리다가 아무도 진행 못함
해결 방법
Mutex : 한 번에 한 스레드만 접근 가능하도록 잠금
Semaphore : 여러 개까지 접근 허용 (신호등 느낌)
Monitor : 고수준 동기화 도구 (Java의 synchronized 등)
✔ 멀티스레드 환경에서 개발하려면 동기화 잘못하면 버그 생김
🤔 이걸 실무 개발자가 알아야 하는 이유가 뭘까?
앱이 느려질 때 : cpu 스케줄링, 메모리 과부하 등 의심
서버 과부하 : 프로세스/스레드 동작 원리 이해 > 최적화 가능
멀티스레드 개발 : 동기화 원리를 모르면 race confition 발생
면접 필수 : 대부분의 기술 면접에서 OS 개념은 반드시 알아야한다.
'실무 > cs' 카테고리의 다른 글
프론트엔드 아키텍처(Architecture)란? (1) | 2025.04.16 |
---|---|
트랜잭션 이란? (0) | 2025.04.08 |
UI 란? (0) | 2025.04.03 |