Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 논블로킹
- os 쓰레드
- 쓰레드
- Lock
- synchronous
- 유저모드
- Mutual exclusion
- 컨텍스트 스위칭
- 자바
- 스핀락
- cpu
- 하드웨어 쓰레드
- 컨디션 변수
- cpu-bound
- non-blocking
- 레디스
- io-bound
- SRTF
- 스케줄링
- Java
- Webflux
- 유저 쓰레드
- 커널모드
- #list
- CPU 스케줄러
- 쓰레드 덤프
- synchronizeation
- 페이지 테이블
- OS
- 바이너리 세마포
Archives
변수의 기록
운영체제와 프로그램 실행 원리 정리 본문
2025년 4월 1일(화)
운영체제 공부
✅ 운영체제와 프로그램 실행 원리 정리
📌 1. 컴퓨터 시스템 구성
컴퓨터 시스템은 다음과 같은 계층 구조로 구성되어 있다:
[사용자]
↓
[응용 프로그램]
↓
[운영체제 (OS)]
↓
[하드웨어 (CPU, 메모리, 디스크, I/O 장치 등)]
- 응용 프로그램: 메모장, 브라우저, 게임 등 사용자가 직접 실행하는 프로그램
- 운영체제(OS): 응용프로그램과 하드웨어 사이를 중재하는 관리자
- 하드웨어: 실제 명령 실행과 데이터 저장을 담당 (CPU, RAM 등)
📌 2. 프로그램 실행의 전체 흐름
- 사용자가 메모장 같은 실행파일을 클릭한다.
- OS가 시스템 콜을 통해 실행파일을 디스크에서 읽어 메모리에 로딩하고, 프로세스를 생성한다.
- OS는 CPU에게 해당 프로세스를 유저 모드에서 실행하라고 명령한다.
- CPU는 메모리에 있는 코드를 실행하면서 응용프로그램을 구동한다.
- 응용프로그램이 파일을 열거나 저장 등 자원 접근이 필요하면, 시스템 콜을 통해 커널 모드로 진입하여 OS가 직접 처리한다.
- 처리 후 다시 유저 모드로 돌아와 실행을 계속한다.
📌 3. CPU, 유저 모드, 커널 모드의 관계
- CPU는 단순히 메모리에 적재된 명령어를 하나씩 읽어 실행하는 **실행기계(엔진)**이다.
- CPU는 현재 자신이 커널 모드인지 유저 모드인지를 항상 인지하고 있음
→ 이 모드에 따라 허용된 명령이나 메모리 접근 권한이 달라짐 - 모드 전환은 CPU가 하는 것이 아니라, OS(커널 코드)가 시스템 콜 등으로 전환을 제어함.
구분설명
유저 모드 | 일반 프로그램이 실행되는 환경, 제한된 권한 |
커널 모드 | OS의 핵심 코드가 실행되는 환경, 전체 시스템 자원 접근 가능 |
시스템 콜 | 유저 모드에서 커널 기능을 요청할 때 사용하는 진입점 |
📌 4. 시스템 콜과 커널 진입
- 시스템 콜은 유저 프로그램이 직접 할 수 없는 작업(디스크 접근, 네트워크, 메모리 관리 등)을 커널에게 요청할 때 사용된다.
- 예: open(), write(), read(), socket() 등
- 흐름: 유저 코드 실행 중 → 시스템 콜 발생 → CPU가 커널 모드로 전환 → OS가 처리 → 유저 모드 복귀
📌 5. 메모리와 접근 권한
- 메모리 자체에는 유저/커널 모드가 없지만, CPU의 모드에 따라 접근 가능한 메모리 영역이 다르다.
- 이 접근 권한 제어는 MMU(Memory Management Unit) 가 담당.
- MMU는 CPU의 현재 모드(Ring 0 or 3 등)와 페이지 테이블 권한을 보고 메모리 접근을 허용/차단한다.
📌 6. 예시 상황별 커널 모드 진입 여부
상황커널 모드 진입 여부이유
키보드 입력 | ✅ 있음 (인터럽트 발생 시) | 하드웨어 이벤트 처리 |
파일 열기/저장 | ✅ 있음 (시스템 콜) | 디스크 접근은 OS만 가능 |
앱 간 전환 | ⚠️ 있음 (스케줄링, 이벤트 처리 중 일부) | OS가 처리 |
글자 입력만 | ❌ 없음 | 이미 메모리에 있는 코드에서 처리 |
📌 7. 요약: OS는 진짜 중재자
- 응용 프로그램은 하드웨어를 직접 다룰 수 없다.
- OS가 대신 하드웨어와 소통하고, 적절히 CPU와 메모리를 관리해준다.
- CPU는 실행만 담당, OS가 실행시킬 코드를 선택하고 모드를 제어한다.
- 이 전체 흐름 덕분에 사용자는 다양한 프로그램을 안전하고 효율적으로 실행할 수 있다.
✅ 마지막 한 줄 요약:
운영체제는 응용프로그램과 하드웨어를 이어주는 강력한 중재자이며, CPU와 메모리, 시스템 자원을 통합적으로 관리하는 핵심 소프트웨어이다.
'CS지식 > 운영체제 (Operating System)' 카테고리의 다른 글
(CS 운영체제) 동기화 (기본) (0) | 2025.04.07 |
---|---|
(CS 운영체제) 동시성 - 스핀락(spinlock) 뮤텍스(mutex) 세마포(semaphore) 각각 특징과 차이 설명 java (0) | 2025.04.07 |
(CS 운영체제)CPU-bound vs IO-bound :시스템 최적화를 위한 성능 특성 및 쓰레드 전략 정리 (0) | 2025.04.06 |
[CS ] 컨텍스트 스위칭 (프로세스 컨테스트 스위칭 <-> 스레드 컨텍스트 스위칭) (0) | 2025.04.05 |
가상 메모리(Virtual Memory)에 대한 개념 (TLB , 페이징 테이블 포함) (0) | 2025.04.04 |