스레드(4)
-
스레드
프로세스는 자원과 제어로 구분할 수 있다. 이 중 제어만 분리한 실행 단위를 스레드라고 한다. 한 프로세스는 하나 이상의 스레드를 가지고 있다. 스레드는 프로세스의 직접 실행 정보를 제외하고 나머지 관리 정보를 공유한다. 아래 이미지와 같이 스레스 실행 정보 블록(TCB)을 독립적으로 가지며, 프로세스의 전역데이터와 힙, 코드 등을 다른 스레드와 공유한다. 스레드는 보통 다른 프로시저를 호출하고, 다른 실행 기록을 기록하는데, 프로시저 : 업무를 실행하기 위한 절차 스레드 중 프로세스의 속성 중 일부가 들어 있는 것을 경량 프로세스, 반대로 스레드 하나에 프로세스가 하나인 경우를 중량 프로세스라고 한다. 프로세스 하나에 포함된 스레드들은 공동의 목적을 달성하려고 병렬로 수행한다. 즉, 프로세스가 하나인 ..
2023.11.11 -
운영체제의 소개
# 운영체제의 개념과 발전 목적 컴퓨터 시스템은 SW와 HW로 구성된다. 운영체제는 사용자에게 HW로 접근할 수 있는 유일한 수단이다. 따라서 운영체제는 사용자에게 응용 프로그램을 실행할 수 있는 환경을 제공한다. 컴퓨터 시스템에는 다양한 사용자 및 응용프로그램이 동시에 사용한다. 운영체제는 다양한 요소들이 컴퓨터 자원을 효울적으로 사용할 수 있도록 관리하고 조정한다. 따라서, 운영체제는 다음과 같은 역할을 한다. - 조정자 : 데이터를 조정하여 사용자에게 프로그램을 작업하는 환경 제공 - 자원 할당/관리자 : 각 응용 프로그램에 필요한 자원을 할당 - 프로그램/IO 제어자 : 입출력 장치 및 응용 프로그램을 제어 ### 운영체제의 목적 - 편리성 : 사용제에게 편리한 환경을 제공 - 효율성 : 자원을 ..
2023.11.01 -
11장 : 동시성
아이템 78. 공유 중인 가변 데이터는 동기화해 사용하라 - synchronizaed 는 해당 메서드나 블록을 한번에 한 스레드씩 수행하도록 보장 - 상태가 일관되지 않은 순간의 객체가 다른 스레드가 보지 못하게 막는 용도로만 생각 - 동기화는 배타적 실행 뿐 아니라 스레드 사이의 안정적인 통신에 꼭 필요 - volatile 선언하면 동기화를 생략해도 됨 - 배타적 수행과는 상관 없지만 항상 가장 최근에 기록된 값을 보장 - 메서드에 synchronized를 붙였으면 volatile 제거해야 - Atomic 패키지는 락 없이도 스레드 안전한 프로그래밍을 지원 - Atomic 은 원자성(배타적 실행)까지 지원 - 가장 좋은 방법은 애초에 가변 데이터를 공유하지 않는 것 - 가변데이터는 단일 스레드에서만 사..
2023.04.22 -
1장 : 개요
스레드 : 경량 프로세스, CPI 자원 스케줄의 기본 단위 - 하나의 스레드는 다른 스레드와 상관 없이 비동기적으로 실행 - 한 프로세스 내 모든 스레드는 같은 변수에 접근하고 같은 힙에 객체 할당 - 스레드는 서로 같은 메모리 주소 공간을 공유하고 동시에 실행되기 때문에 다른 스레드가 사용중일지도 모르는 변수를 읽거나 수정할 수도 있다. - 동기화를 충분히 해두지 않으면 여러 스레드에서 실행되는 연산의 순서가 예측할 수가 없음 # 원격 객체가 대비해야 하는 두 가지 위험 1. 먼저 다른 객체와 공유될 수 있는 상태에 접근 시 적절히 조율해야하나, 원격 객체 자체의 상테에 접근할 때도 마찬가지, 2. RMI 객체도 동시에 여러 번 호출될 수 있게 작성해야 하며 스레드에 안전해야 - 동시 수행 코드를 개발..
2023.04.15