gwichanlee.log
로그인
gwichanlee.log
로그인
[OS] 스레드(Thread)
귀찮Lee
·
2023년 4월 12일
팔로우
0
0
Operating System
목록 보기
11/14
◎ 스레드 vs 프로세스
스레드 vs 프로세스
스레드 : CPU 스케줄러가 CPU에 전달하는 일 하나 (CPU의 작업 단위)
프로세스 : 실행을 위해 메모리에 올라온 프로그램
차이점
운영체제의 작업단위는 프로세스, CPU의 작업 단위는 스레드
프로세스끼리는 약하게 결합되어 있지만 스레드끼리는 강하게 연결되어 있음
한 프로세스 내 여러 스레드는 코드, 파일등의 자원을 공유함으로써 자원의 낭비를 막고 효율성을 향상함
◎ Multi- 의 차이
멀티 스레드 :
한 프로세스 내
작업을 여러개의 스레드로 분할 함으로서 작업의 부담을 줄임
멀티 테스킹 : 운영체제가 CPU의 작업을 줄 때,
시간을 잘게 나누어
배분하는 기법
멀티 프로세싱 :
CPU를 여러개 사용
하여 여러 개의 스레드를 동시에 처리
CPU 멀티 스레드 : 파이프라인 기법을 이용하여 동시에 여러 스레드를 처리하도록 만든 병렬 처리 기법
하드웨어적 방법으로 하나의 CPU에서 여러개의 스레드를 동시에 처리하는 병렬 처리 기법
◎ 멀티 테스킹 vs 멀티 스레드
멀티 테스킹
멀티 스레드
fork() 시스템 호출로 프로세스를 복사함
객체를 확장하여 스레드를 만듦
코드 영역, PCB, 데이터 영역의 일부가 메모리에 중복됨
코드, 파일 등의 자원을 공유
fork() 한 프로세스의 문제가 생겨도 다른 프로세스에 영향을 미치지 않음
한 스레드에서 오류가 발생한다면 다른 스레드에도 영향을 미침
◎ 멀티 스레드의 장단점
장점
응답성 향상
자원 공유
효율성 향상
다중 CPU 지원
단점
한 스레드에 문제가 생기면 전체 프로세스에 영향을 미침
◎ 멀티 스레드 모델
스레드의 종류
커널 스레드 : 커널이 직접 생성하고 관리하는 스레드
사용자 스레드 : 라이브러리에 의해 구현된 일반적인 스레드
사용자 레벨 스레드
사용자 프로세스 내 여러개의 스레드가 커널의 스레드 하나와 연결
라이브러리가 직접 스케줄링 및 처리를 함
→ 문맥 교환이 필요 없음
커널 스레드가 입출력 작업을 위해 대기하면, 모든 사용자 스레드가 같이 대기함
한 프로세스의 타임 슬라이스를 여러 스레드가 공유
→ 여러 개의 CPU를 동시에 사용할 수 없음
커널 레벨 스레드
하나의 사용자 스레드와 하나의 커널 스레드가 연결
독립적으로 스케줄링이 되므로 특정 스레드가 대시 상태에 들어가도 다른 스레드는 계속 작업 가능
커널 레벨에서 모든 작업 지원 → 멀티 CPU 사용 가능
커널의 기능을 사용하기 때문에 보안에 강하고 안정적으로 작동, 문맥 교환시 오버헤드 때문에 느리세 작동
멀티레벨 스레드
사용자 레벨 스레드, 커널 레벨 스레드 혼합 방식 (M to N)
특정 스레드가 대시 상태에 들어가도 다른 스레드는 계속 작업 가능
문맥 교환시 오버 헤드 발생
사용자 레벨 스레드만큼 빠르지 않음
빠르게 움직여야 하는 스레드는 사용자 레벨 스레드로, 안정적으로 움직여야 하는 스레드는 커널 레벨 스레드로 작동함
귀찮Lee
장비를 정지합니다.
팔로우
이전 포스트
[OS] 프로세스의 생성&관리
다음 포스트
[OS] 스케줄링
0개의 댓글
댓글 작성