본문 바로가기

CS

(27)
[CS] 멀티 코어 vs 멀티 프로세스 vs 멀티 스레드 멀티프로세스(Multi-Process)초기의 컴퓨터 시스템에서는 한 번에 하나의 작업(프로세스)만 실행할 수 있었습니다. 하지만 사용자 수가 늘어나고 동시에 여러 작업을 처리해야 할 필요성이 생기면서, 한 시스템에서 여러 프로세스를 동시에 실행하는 멀티프로세스 개념이 등장했습니다. 멀티프로세스는 하나의 운영체제에서 독립적인 여러 프로그램(프로세스)을 동시에 실행하는 방식입니다.각 프로세스는 독립적인 메모리 공간을 가지며, 서로 간섭하지 않습니다. 장점각 프로세스가 독립적이기 때문에 한 프로세스가 죽더라도 다른 프로세스에 영향을 주지 않음.안정성과 보안성이 높음.단점프로세스 간의 통신(IPC)이 복잡하고 비용이 높음.독립적인 메모리 공간을 사용하기 때문에 메모리 사용량이 많음.예시웹 브라우저에서 탭마다 독..
[CS] 스레드의 종류 하드웨어 스레드, OS 스레드, 네이티브 스레드, 커널 스레드, 유저 스레드, 그린 스레드 등 많은 스레드들이 있다.스레드의 종류와 개념을 정리해보자. 우리가 작성한 프로그램은 컴퓨터 상에서 위와 같이 동작한다. 컴퓨터를 구성하는 하드웨어, 하드웨어를 관리하고 컴퓨터 시스템 전반을 관리하는 OS, 그리고 우리가 개발한 프로그램은 이 운영체제를 통해서 하드웨어를 사용하게 된다.하드웨어 스레드코어의 고민메모리에서 데이터를 기다리는 시간이 꽤 오래걸린다..코어에서 프로그램이 실행될 때에 프로그램은 연산 작업을 위해서 메모리에서 데이터를 읽어오거나,연산 작업의 결과를 메모리에 값을 쓰는 메모리에 접근하는 작업들이 코어에서 실행되는 연산 작업에 비해서 오래 걸린다.데이터를 기다리는 동안에 코어가 아무 일도 안하는..
[CS] 동기와 비동기 동기(Synchronous)차례차례 작업을 실행하는 것이다. 예를 들어 아래의 1번 작업이 끝나야 이어서 2번 작업을 실행하는 것이다.작업을 맞춰 실행한다는 말은 요청한 작업에 대해 완료 여부를 따져 순차대로 처리하는 것을 말한다.즉, 동기 프로그래밍이란 여러 작업들을 순차적으로 실행하도록 개발하는 것이다. 특징작업이 순차적으로 실행되며, 다음 작업은 이전 작업이 끝난 후에 실행된다.대기 시간이 발생할 수 있으며, I/O 작업(파일 읽기/쓰기, 네트워크 요청 등) 중에 CPU가 유휴 상태로 대기한다.코드 예시import timedef task1(): print("Task 1 시작") time.sleep(2) # 2초 대기 (동기 작업) print("Task 1 완료")def task2(..
[CS] 인터럽트와 시스템 콜 유저 모드와 커널 모드프로그램이 실행되다가 유저 모드에서 커널 모드로 바뀌고 커널 모드에서 유저 모드로 바뀌기도 한다.간단한 예를 통해서 유저 모드와 커널 모드를 살펴보자. User mode우리가 개발하는 프로그램(작성한 코드)은 일반적으로 유저 모드에서 실행된다.프로그램 실행 중에 인터럽트(interrupt)가 발생하거나 시스템 콜(system call)을 호출하게 되면 커널 모드로 전환Kernel mode나중에 이어서 실행하기 위해 프로그램의 현재 CPU 상태를 저장함커널이 언터럽트나 시스템 콜을 직접 처리즉, CPU에서 커널 코드가 실행됨모든 처리가 완료되면 중단됐던 프로그램의 CPU 상태를 복원CPU 상태를 복원하게 되면 다시 통제권을 프로그램에게 반환커널(kernel)운영체제의 핵심이다.시스템의..
[CS] CPU bound, IO bound CPU프로세스의 명령어를 해석하고 실행하는 장치 IO(input/output)파일을 읽고 쓰거나 네트워크의 어딘가와 데이터를 주고 받는 것입출력 장치와 데이터를 주거나 받는 것 버스트(Burst)어떤 현상이 짧은 시간 안에 집중적으로 일어나는 일 CPU 버스트CPU를 사용하는 구간프로세스가 CPU에서 한번에 연속적으로 실행되는 시간즉, 메모리에 올라와 있는 프로세스가 자신의 차례가 되서 CPU에서 실행됬을 때 자신의 명령어들이 CPU에서 연속적으로 실행되는 시간이다.CPU만 연속적으로 쓰면서 연산을 실행프로세스가 CPU에서 일부 코드를 실행하는 데 소비하는 시간CPU burst는 프로세스의 RUNNING 상태를 처리I/O 버스트I/O를 실행하는 구간프로세스가 IO 작업을 요청하고 결과를 기다리는 시간프로..
[CS] 동기화 기법 동기화여러 프로세스/쓰레드를 동시에 실행해도 공유 데이터의 일관성을 유지하는 것  임계 구역(critical section)공유 데이터의 일관성을 보장하기 위해 하나의 프로세스/스레드만 진입해서 실행 가능한 영역  레이스 컨디션(race condition)임계 구역에 동시에 접근하면 자원의 일관성이 깨질 수 있다.이를 레이스 컨디션이라고 한다.(여러 프로세스/쓰레드가 동시에 같은 데이터를 조작할 때 타이밍이나 접근 순서에 따라 결과가 달라질 수 있는 상황) 임계구역 문제의 해결책이 되기 위한 조건상호배제(mutual exclusion): 한 프로세스가 임계 구역에 진입했다면 다른 프로세스는 들어올 수 없다.진행(progress): 임계 구역에 어떤 프로세스도 진입하지 않았다면 진입하고자 하는 프로세스는 ..
[CS] 병행성과 병렬성 병행성(Concurrency)과 병렬성(Parallelism)은 컴퓨터에서 여러 작업을 수행할 때 자주 등장하는 개념이다.종종 혼용되어 사용되는 개념이지만, 실제로는 중요한 차이점이 있다.멀티태스킹을 처리하는 방식에 있어 근본적으로 다른 접근 방식을 제시하기 때문이다.멀티태스킹: 하나의 컴퓨터 시스템에서 여러 작업을 동시에 실행하는 방식병행성(Concurrency)병행성은 여러 작업이 시간을 나누어 교차 실행되는 개념이다.실제로는 한 번에 하나의 작업만 처리되지만, 빠르게 전환되면서 동시에 처리되는 것처럼 보이게 된다. - (단일 CPU에서도 가능) 동시성은 작업의 실행 순서를 잘 조정하여, 자원의 효율적 사용과 빠른 응답 시간을 달성할 수 있다. 컴퓨터에서는 하나의 프로세서로도 가능하며, 빠르게 전환하..
[CS] PCB와 TCB 용어 정리프로그램컴퓨터가 실행할 수 있는 명령어들의 집합프로세스컴퓨터에서 실행 중인 프로그램 각각의 프로세스는 독립된 메모리 공간을 할당 받음명령어들과 데이터를 가짐CPU명령어를 실행하는 연산 장치메인 메모리프로세스가 CPU에서 실행되기 위해 대기하는 곳IO파일을 읽고 쓰거나네트워크의 어딘가와 데이터를 주고 받는 것입출력 장치와 데이터를 주거나 받는 것단일 프로세스 시스템한 번에 하나의 프로그램만 실행됨단점: CPU 사용률이 좋지 않음멀티 프로그래밍여러 개의 프로그램을 메모리에 올려놓고 동시에 실행단점: CPU 사용 시간이 길어지면 다른 프로세스는 계속 대기멀티 태스킹프로세스는 한번 CPU를 사용할 때 아주 짧은 시간(=quantum)만 CPU에서 실행되도록 하자프로세스의 응답 시간을 최소화 시키는데 목..
[CS] 파일 시스템 목차파일디렉터리파일 할당 방법파일 시스템 파일 시스템(file system)파일과 디렉터리를 관리하는 운영체제 내의 프로그램파일과 디렉터리를 다루어 주는 프로그램 파일과 디렉터리보조기억장치의 데이터 덩어리, 파일과 디렉터리 파일보조기억장치에 저장된 관련 정보의 집합의미 있고 관련 있는 정보를 모은 논리적 단위 파일을 이루는 정보파일을 실행하기 위한 정보 + 부가 정보 (= 속성, 메타 데이터) 파일의 속성  파일 연산을 위한 시스템 호출파일 생성파일 삭제파일 열기파일 닫기파일 읽기파일 쓰기 등 디렉터리윈도우에서는 폴더(folder)1단계 디렉터리    여러 계층으로 파일 및 폴더를 관리하는 트리 구조 디렉터리최상위 디렉터리(루트 디렉터리, /), 서브 디렉터리경로디렉터리를 이용해 파일/디렉터리의 위치, ..
[CS] 페이지 교체와 프레임 할당 목차요구페이징페이지 교체페이지 교체 알고리즘스래싱프레임 할당 물리 메모리보다 큰 프로세스를 실행할 수 있지만,그럼에도 불구하고 메모리의 크기는 한정되어 있다. 운영체제 입장에서 해결해야 할 문제기존에 적재된 불필요한 페이지를 선별해 보조기억장치로 내보내야 함(페이지 교체)프로세스들에게 적잘한 수의 프레임을 할당해야 함(프레임 할당)  요구 페이징처음부터 모든 페이지를 적재하지 않고 필요한 페이지만을 메모리에 적재하는 기법요구되는 페이지만 적재하는 기법순수 요구 페이징 방식  이러한 요구 페이징 시스템이 안정적으로 작동하려면 해결해야 할 문제?페이지 교체프레임 할당 페이지 교체 알고리즘요구 페이징 기법으로 페이지들을 적재하다보면 언젠간 메모리가 가득 차게 된다.당장 실행에 필요한 페이지를 적재하려면 적재된..