본문 바로가기

스레드4

[운영체제] 사용자 수준 스레드와 커널 수준 스레드 사용자 수준 스레드와 커널 수준 스레드 쓰레드는 뭐니? 프로세스 내 작업의 단위를 말함 하나가 될 수도 있고, 여러개(멀티쓰레드)가 될 수도 있음! 커널은 뭐니? 컴퓨터와 전원을 켜면 운영체제는 이와 동시에 수행된다. 또한, 소프트웨어가 컴퓨터 시스템에서 수행되기 위해서는 메모리에 그 프로그램이 올라가 있어야 한다. 마찬가지로 운영체제 자체도 소프트웨어이기 때문에 전원이 켜짐과 동시에 메모리에 올라가야 한다. 하지만, 운영체제처럼 규모가 큰 프로그램이 모두 메모리에 올라간다면 한정된 메모리 공간의 낭비가 심함 → 따라서 운영체제 중 항상 필요한 부분만을 전원이 켜짐과 동시에 메모리에 올려놓고 그렇지 않은 부분은 필요할 때 메모리에 올려서 사용하게 된다. 이 때 메모리에 상주하는 운영체제의 부분을 커널이라.. 2022. 3. 2.
[운영체제] Thread-safe란? Thread-safe 멀티 스레드 환경에서 여러 스레드가 같은 공유자원에 접근할때 의도한 대로 동작하는 것 Thread-safe하다라고 표현한다. 공유 자원 접근에 대한 임계 영역을 동기화로 제어해야 한다. - 상호배제라고 부른다. 동기화 방법은 뮤텍스, 세마포어가 있다. 2022. 2. 28.
[운영체제] 멀티 프로세스와 멀티스레드 멀티 스레드 멀티 스레드 한 프로세스 내에서 여러 스레드를 두는 것 멀티 프로세스 대신 멀티 스레드를 사용하는 이유 스택을 제외한 자원을 공유하기 때문에 자원의 효율성 증대 프로세스 생성 비용보다 스레드 생성 비용이 적다. 프로세스 간 컨텍스트 스위칭 시 오버헤드가 크지만 스레드는 메모리를 공유하기 때문에 자원 소모가 적다. 처리 비용 및 응답 시간 단축 프로세스 간 통신(IPC)보다 스레드 간의 통신 비용이 적다. 스레드 간의 전환 속도가 훨씬 빠르다. 멀티 스레드 사용 시 주의할 점 힙 영역을 공유하기 때문에 힙 영역 자원 사용 시 동기화 필수 동기화를 위한 락이 과도하게 사용되면 성능이 저하된다. 일부 스레드가 종료되면 프로세스 전체가 종료될 수 있다. 2022. 2. 25.
[운영체제] 프로세스와 스레드 차이 프로세스와 스레드의 차이 프로세스 현재 실행 중인 프로그램 메모리 위에 적재되어 cpu의 할당을 받을 수 있다. 동적 메모리인 힙을 할당받을 수 있다. 프로세스의 구조 text(code): 일반적인 코드 data: 변수 및 초기화된 데이터 stack: 임시 데이터(함수 호출 및 로컬 변수 등) heap: 코드 내에서 동적으로 생성되는 데이터 프로세스는 다른 프로세스의 자원에 접근할 수 없다. 역할에 따른 구분 사용자 프로세스 사용자 코드를 수행하는 프로세스 커널 프로세스 모든 메모리와 프로세스의 명령에 액세스할 수 있는 프로세스 실행 순서 제어 및 다른 프로세스의 접근 제어 사용자 프로세스 생성 프로세스의 상태 변화 New: 프로그램이 메인 메모리에 할당 Ready: 프로그램 초기화 등 모든 준비를 마친.. 2022. 2. 25.