Computer Science/Operating System
멀티 스레드에 대한 이해 with 자바
멀티 스레드란? 멀티 스레드란 한 응용 프로그램에 여러 스레드를 갖고 있는 것을 말한다. 스레드는 CPU가 처리하는 작업 단위를 말하며, 따라서 멀티 스레드는 CPU가 주어진 시간 동안 스레드를 전환하며 실행하는 것을 말한다. 만약, CPU의 코어가 여러 개라면 한 응용 프로그램 내에 코드의 다른 부분을 여러 개의 CPU 코어에서 실행할 수 있게 된다. 이를 그림으로 표현하면 아래와 같다. 왜 멀티스레드를 사용할까? 1. 단일 CPU일 때 CPU의 효율을 극대화할 수 있다. CPU의 작업은 매우 비싼 작업이기 때문에 CPU를 잠시라도 쉬게 해서는 안된다. 예를 들어, 한 스레드가 네트워크를 통해 전송된 요청의 응답을 기다리고 있는 상황이라면, CPU도 어떠한 작업을 하지 않고 대기 중이 된다. 이때는 다..
운영체제 - 프로세스 스케줄링
자원 관리 정의 컴퓨터 자원을 효율적으로 관리하는 것. 자원 관리 종류 1. 시간 분할 관리 : CPU 자원을 시간으로 분할하여 사용. (프로세스 스케줄링 = CPU 스케줄링) 2. 공간분할 관리 : 메모리 공간을 분할하여 사용. (메모리 관리) 프로세스 스케줄링 정의 자원을 어느 시점에 어떤 프로세스에게 줄 것인가 결정. 스케줄링이 필요 없는 프로세스 : 인터럽트 처리, 오류 처리, 사용자의 시스템 호출 스케줄링이 필요한 프로세스 : 사용자 프로세스, 시스템 프로세스 프로세스 스케줄링 목적 1. 자원을 공정하게 사용하기 위해 2. 우선순위가 높은 작업을 먼저 처리하기 위해 3. 단위 시간당 처리량을 높이기 위해 4. 적절한 반환시간을 보장해주기 위해 스케줄링 선택 기준 1. 시스템 특성에 맞는 스케줄링..
운영체제 - 병행프로세스, 상호배제
병행 프로세스 정의 여러 프로세스가 빠르게 번갈아 실행되어 동시에 실행되는 것처럼 보이는 것. 시분할 시스템과 동일한 정의지만, 병행 프로세스는 프로세스 그 자체를 의미. 병행 프로세스의 종류 1. 독립 프로세스 프로세스간에 서로 영향을 끼치지 않는 프로세스. 자원을 공유하지 않음. 2. 협력 프로세스 동일한 목표를 가진 프로세스 간에 상호작용하며 수행하는 프로세스. 자원을 공유함. 병행 프로세스의 문제점 1. 공유 자원을 한 순간에 한 프로세스만 사용하도록 해야 함(상호 배타적). 2. 하나의 기능을 함께 수행하므로 프로세스 간에 동기화를 해주어야 함. 3. 자원을 공유하기 위해 프로세스 간에 통신이 되어야 함. 4. 교착상태를 해결해야 함. 동기화 프로세스 간에 실행 순서를 정해, 자원의 일관성을 유..
운영체제 - 프로세스, 스레드 (2022-04-18 업데이트)
프로세스 정의 실행 중인 프로그램으로 디스크에 있던 코드가 메모리에 올라오면 프로세스가 됨. 프로세스 구조 1. 스택(stack) 지역변수, 호출 함수의 반환 주소, 매개 변수 등과 같이 프로그램을 실행하는데 필요한 데이터를 일시적으로 저장하는 영역. 힙과 인접한 방향으로 자라다가 힙과 만나게 되면 메모리가 소진되었다는 의미. 커널의 스택에는 사용자 프로세스가 요청한 운영체제 함수가 올라감. 운영체제의 자원(함수 등)은 공유 데이터이기 때문에 커널의 스택에 각 프로세스별 호출한 운영체제의 함수가 쌓임. 2. 힙(heap) 프로그래머가 동적으로 메모리를 할당 받을 때 사용되는 영역. 프로그램이 실행되는 중에 필요가 생겨 메모리를 할당받기 때문에 메모리 반환도 사용자가 직접 반환해야 함. 3. 데이터(dat..
운영체제
운영체제 정의 사용자(또는 프로그램)와 하드웨어 사이를 연결해주는 소프트웨어. 운영체제를 사용하는 이유 1. 시스템 자원을 효율적으로 사용할 수 있도록 관리해줍니다. 너무 한 프로그램만 자원을 사용하지 않도록 적절히 분배해줍니다. 2. 사용자가 편리하게 컴퓨터를 사용할 수 있도록 해줍니다. 만약, 운영체제가 없다면 1. 초기 컴퓨터처럼 사용자가 직접 전선을 꽂았다, 빼며 전기적 신호를 주어야 합니다. 2. 컴퓨터를 사용하기 위해서 사용자가 하드웨어에 대해 자세히 알고 있어야 합니다. 운영체제의 처리 방식 1. 일괄 처리(= 배치 처리) 작업이 일정량만큼 쌓이면 한 번에 처리. 2. 멀티 프로그래밍 CPU가 유휴시간이 되면 다른 프로그램에게 작업권을 넘겨줌. CPU 사용량을 최대화하는 것이 목적 3. 시분..