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
- 웹해킹
- 프로세스
- web
- 시스템프로그래밍
- MySQL
- 상호배제
- sqli
- rubiya
- lordofsqlinjection
- 알고리즘
- XSS
- Los
- webhackingkr
- CODEGATE
- Linux
- SQLInjection
- hacking
- 해킹
- ubuntu
- 운영체제
- CCE
- SQL Injection
- SQL
- Python
- webhacking.kr
- ctf
- Writeup
- crosssitescripting
- WebHacking
- 시스템
Archives
- Today
- Total
One_Blog
스레드 [운영체제 수업] 본문
728x90
날짜 : 2023년 3월 20일
오늘 수업 주제
: 스레드
오늘 배운 내용 요약
:
스레드가 생긴 이유
프로세스 생성과 문맥 교환 작업이 많아지면 성능 저하가 발생하게 됨.
-> 가벼운 스레드 생성 및 스위칭을 선호
프로세스 간 통신보다 스레드 간 통신이 구현 및 관리면에서 효율적임.
-> 스레드 탄생
스레드란?
- 프로세스의 특성인 자원과 제어에서 제어만 분리한 실행 단위
- 프로세스 내에서 실행되는 코드의 흐름
- 프로세스 하나는 스레드 한 개 이상으로 나눌 수 있음.
- 1개의 스레드 = 싱글 스레드 ; n개의 스레드 = 멀티 스레드
- 같은 프로세스의 스레드들은 스택 공간만 독립적으로 가지고 같은 주소 공간을 공유한다.
ex) 웹 브라우저 : 이미지 / 텍스트 로딩 스레드; 네트워크 연결 스레드 ; 유저 상호 작용 스레드
프로세스와 스레드의 차이점
프로세스
- 실행 중인 프로그램
- 생성과 종료에 많은 시간을 소요
- 문맥 교환에 많은 시간을 소요
- IPC를 통해 상호작용, 오버헤드 상승
- 자원소모 많음
- 각각 독립적으로 존재
- 안정적임
스레드
- 프로세스의 실행 코드의 흐름
- 생성과 종료에 적은 시간을 소요
- 문맥 교환에 적은 시간을 소요
- 공유 메모리를 통해 상호작용, 오버헤드 적음
- 자원소모 적음
- 스택만 독립적이며, 나머지는 공유
- 안정적이지 않음.
스레드의 상태변화
- 프로세스와 동일 (준비 실행 대기 종료)
- 스레드의 상태 변화는 다른 스레드에 영향을 끼침
- 스레드 제어 블록 (TCB)
- 실행상태, 스케줄링 정보, 계정 정보, 다양한 포인터, 프로세스 제어 블록을 포함하는 포인터 등 보유
- PCB ( TCB
멀티스레드의 병렬 수행
- 프로세스가 여러 개 인 경우, 여러 작업이 동시에 병렬적으로 수행되기에 멀티 스레드로 병렬성 향상 가능
- 프로세서가 하나인 경우, 각 시간에 한 작업만 수행되지만 스위칭을 통해 병렬적으로 수행되는 것
처럼 보이게끔 하여 동시성 향상 가능
멀티 스레드의 장점
- 응답성
- 자원 공유
- 경제성
- 확장성
커널 스레드와 유저 스레드
커널 스레드
- 안정적이지만 유저모드에서 커널모드로 계속 바꿔줘야 하기에 성능 저하가 있음
유저 스레드
- 안정성은 떨어지지만 성능 저하는 없음.
Many - To - One Model
- 스레드 라이브러리로 스레드가 관리되어 효율적
- 한번에 한 유저 스레드만 커널에 접근 -> 병렬 수행 X
- 스레드 중 한개가 Block 되면 프로세스가 Block 됨
One - To - One Model
- 동시성을 향상시켜주지만 커널 스레드가 늘어남에 따라 오버헤드가 커져 성능 저하 발생
Many - To - Many Model
- 어느정도 동시성과 커널 스레드의 오버헤드 걱정이 없음.
'운영체제' 카테고리의 다른 글
공유 자원 사용 시 일어나는 일 [운영체제 수업] (0) | 2023.03.28 |
---|---|
병렬 프로세스 [운영체제 수업] (0) | 2023.03.21 |
프로세스 [운영체제 수업] (0) | 2023.03.16 |
운영체제 서비스 [운영체제 수업] (0) | 2023.03.14 |
운영체제의 개념과 역할 [운영체제 수업] (0) | 2023.03.13 |