일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 쉬운 코드
- 시그널 핸들러
- Extendable hashing
- 인터럽트
- 코딩테스트 [ ALL IN ONE ]
- 트랜잭션
- 온디바이스AI
- 프로세스 주소 공간
- Git
- 커널 동기화
- 시스템프로그래밍
- 백엔드
- 데이터베이스
- SQL
- 갤럭시 S24
- CPU 스케줄링
- concurrency control
- SDK
- BreadcrumbsComputer-Networking_A-Top-Down-Approach
- 반효경
- B tree 데이터삽입
- vite
- 운영체제
- 개발남노씨
- 코딩애플
- 김영한
- 쉬운코드
- recoverability
- 네트워크
- 운영체제와 정보기술의 원리
- Today
- Total
티끌모아 태산
OS for Beginner(1) 본문
OS for Beginner에서는 운영체제에서 필수적으로 알아야하는 기본 개념들에 대해서 배워보도록 하겠습니다.
프로세스와 스레드의 차이
프로세스(process)란 실행 중인 프로그램(program in execution)을 뜻한다. 디스크에 실행파일 형태로 존재하던 프로그램이 메모리에 적재되어 CPU를 할당 받아 실행되면 프로세스가 된다. 프로세스는 CPU을 할당 받아 자신의 코드를 수행하기도 하고, CPU를 반환하고 입출력을 수행하기도 한다. 그리고 자신의 임무를 다 하면 종료되어 사라진다.
스레드(Thead)란 프로세스의 실행 단위라고 할 수 있다. 한 프로세스 내에서 동작되는 여러 실행 흐름으로 프로세스 내의 주소 공간이나 자원을 공유할 수 있다. 그리고 하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화 하여 수행능력을 향상 시키는 것을 멀티스레딩이라 한다.
멀티스레드
프로세스를 이용하여 동시에 처리하던 일을 스레드로 구현할 경우 메모리의 공간과 시스템 자원 소모가 줄어든다.
하지만 멀티 프로세스 기반으로 작업할 때는 프로세스 간 공유하는 자원이 없기 때문에 동일한 자원에 동시에 접근하는 일이 없지만 멀티 스레딩을 기반으로 작업을 할 때는 이부분을 간과하면 안된다. 서로 다른 스레드가 데이터와 힙 영역을 공유하기 때문에 어떤 스레드가 다른 스레드가 사용중인 변수나 자료구조에 접근하여 잘못된 값을 읽어오거나 수정할 수 있다. -> 멀티 스레딩 환경에서는 동기화 작업이 필요.
동기화 작업 -> 작업 처리 순서와 공유 자원에 대한 접근을 통제한다 -> 병목현상 발생하여 성능 저하될 가능성 높다 -> 과도한 락으로 인한 병목 현상을 줄여야 한다.
멀티 프로세스와 멀티 스레드는 동시에 여러 작업을 한다는 점에서 같지만 다른 측면을 갖고 있다. 멀티 스레드는 멀티 프로세스보다 더 적은 메모리 공간을 차지하고 문맥 전환이 빠르다는 장점이 있다. 하지만 예기치 못한 오류 인해 하나의 스레드가 종료되면 전체 스레드가 종료될 가능성이 있다는 점과 동기화 문제를 갖고 있다. 이에 반해, 멀티 프로세스는 하나의 프로세스가 죽더라도 다른 프로세스에는 영향을 주지 않고 정상적으로 수행된다는 장점이 있지만 더 많은 메모리 공간과 CPU 시간을 차지한다는 단점이 있다.
'CS 지식 > 운영체제' 카테고리의 다른 글
OS for Beginner(2) (0) | 2023.06.14 |
---|---|
Memory Management(4) (0) | 2023.06.13 |
Memory Management(3) (2) | 2023.06.13 |