CS 27

[Network] 라우터 vs 스위치_(2)스위치(Switch)란?

** 이전게시글 참고: 2021.05.20 - [CS/Network] - [Network] 라우터 vs 스위치_(1)라우터(Router)란? 라우터는 한마디로 네트워크계층(L3)에서 목적지 경로를 찾아 데이터를 전송하는 장비이다. 이와는 다른 특징을 가지는 스위치에 대해서 좀 더 알아해보자. - 스위치란 같은 네트워크 내부(LAN)에서 데이터 전송을 수행하는 기기이다. 데이터링크계층(L2)에 속하여 디바이스간 IP packet을 전송할 때, 출발/목적지 MAC 주소와 IP packet을 Frame에 담아 목적지로 스위칭(Switching)한다. 즉, 기기는 스위치를 통해 로컬과 연결되고 네트워크는 라우터를 통해 다른 네트워크에 연결된다. 일반적으로 패킷이 인터넷에 이르기까지 기기 > 허브 > 스위치 > ..

CS/Network 2022.03.05

[OS] 다중 프로그램을 메모리에 할당하는 방법 (고정 분할, 가변 분할)

모든 프로세스는 서로 다른 메모리 사이즈( 4GB, 8GB, 16GB ...)를 가지는 PC에서 모두 동일하게 실행되어야 한다. 프로세스마다 크기가 다르기 때문에 메모리의 구역을 나누는 방식은 중요한 문제가 되는데, MMU(Memory Manage Unit)라고 불리는 메모리 관리자는 fetch(메모리로 가져옴), placement(배치), replacement(재배치)를 수행하여 메모리에서 운영체제와 다양한 프로세스의 구역을 나누어 작업공간을 확보한다. 다중 프로그래밍 환경에서 fetch 수행 시에 프로세스은 고정(page)/가변(segmentation) 사이즈로 분할되어진 메모리에 할당되어지고, 메모리에 더이상 새로운 프로세스를 할당할 공간이 부족할 경우에는 이전 프로세스를 스왑영역(Swap Area..

CS/OS 2021.11.14

[OS] 프로그램이 메모리 사이즈보다 크다면? - 메모리 오버레이 기법

다음과 같은 상황을 생각해보자. - 메모리의 용량이 작을 때 이보다 큰 사이즈의 프로그램을 실행시키려면 어떻게 해야할까? - 고정 분할방식으로 나뉜 메모리의 page 사이즈보다 프로그램의 사이즈가 크면 어떻게 해야할까? 메모리공간 < 프로그램사이즈인 위와 같은 상황에서는 프로그램을 쪼개어야 메모리에 할당할 수 있다. 이 때 프로그램의 명령어와 데이터들(instructions and data)을 Module로 나누어 먼저 실행되어야하는 모듈을 메모리에 우선적으로 할당하고, 다음 모듈을 실행하기 위해서는 이전의 모듈을 swap area로 옮겨 메모리를 관리하는 방식을 메모리 오버레이 기법이라고 한다. 1번의 예에서 메모리 오버레이 기법을 통해 메모리를 관리하는 방법을 자세히 살펴보면 다음과 같다. - 현재에..

CS/OS 2021.11.14

[OS] 교착상태 (Dead Lock)

교착상태(Dead Lock)란, : 여러 프로세스가 서로의 작업이 끝나기만을 기다리며 작업을 진행하지 못하게 되는 상태 ex) 식사하는 철학자 문제 : 왼쪽->오른쪽 순으로 포크를 집어야 식사를 시작할 수 있다는 조건이 있을 때, 5명의 철학자는 각자 왼쪽의 포크를 집은 뒤 오른쪽 포크를 무한정 기다리게 되어 굶어 죽을것이다. =>교착상태 교착상태 필요조건 : 4가지를 모두 충족할 때 교착상태가 발생한다. o 상호배제 : A가 사용중인 자원을 B가 동시에 사용할 수 없다. o 비선점 : A가 사용중인 자원을 B가 뺏을 수 없다. o 점유와 대기 : 자원1을 사용(점유)하면서 자원2를 필요(대기)로 하는 상황이다. o 원형대기 : 점유와 대기상태의 프로세스들의 요청이 원형을 이룬다. 교착상태 해결방법 o ..

CS/OS 2021.08.30

[OS] 임계구역 접근방법 - 뮤텍스(Mutex)와 세마포어(Semaphore)

임계구역 (Critical Section) : 여러 프로세스가 특정 공유자원을 병행하며 읽고 쓰면 "경쟁조건이 발생했다" 라고 말한다. 이 때, 프로그램의 결과는 자원에 접근한 프로세스의 순서에 따라서 달라지는데, 이러한 영역을 임계구역이라고 한다. ex) 생산자-소비자 문제 - Producer는 물건을 생산하는 input method 를 호출한 뒤 sum을 하나 증가시킨다. - Consumer는 물건을 소비하는 output method를 호출한 뒤 sum을 하나 감소시킨다. 이 때, 둘 다 sum = 3인 상태에서 동시에 전역 변수 sum에 접근하여 (1) Producer는 sum = 4, (2) Consumer는 sum = 2로 업데이트 하려고 하면 (1)->(2) or (2)->(1) 어떤 순서로 ..

CS/OS 2021.08.30

[OS] CPU 스케줄링 방법

운영체제의 역할 중에는 CPU 작업 프로세스와 할당 순서를 관리하는 "CPU 스케줄러"의 역할이 있다. 스케쥴러는 공평하게 프로세스를 실행시키고 반응시간을 최소화, 자원의 효율성을 증가시키는 등의 목적을 가지며 이를 위한 스케줄링 방법에는 여러가지가 있다. 스케줄러 종류 o 선점형 스케줄러 (Preemptive) : 운영체제가 CPU에서 실행 중인 프로세스의 차례를 뺏을 수 있다. ==> interrupt (장점) 문맥교환(Context Switch)에 의한 낭비가 발생 (단점) CPU의 독점이 없기 때문에 전체적으로 빠른 응답시간 o 비선점형 스케줄러 (Non-Preemptive) : 한 번 실행된 프로세스가 종료될 때까지 CPU를 독점한다. ==> 일괄작업시스템 (장점) 스케줄러의 작업율이 높고, 문..

CS/OS 2021.08.10

인터넷익스플로어와 크롬에서 멀티탭 기능 구현 차이

멀티태스킹, 멀티스레드를 공부하다가 인터넷익스플로어(Internet Explorer) 브라우저와 크롬(Chrome) 브라우저에서 멀티탭을 구현한 방식에 차이가 있다는 흥미로운 주제를 발견했다. 두 브라우저에서 멀티탭 구현방식의 차이와 각각의 특징에 대해서 알아보자. 인터넷익스플로어 (Internet Explorer) 크롬 (Chrome) 멀티스레드 멀티태스킹 (장점) 메모리에는 하나의 프로세스로 존재하기 때문에 작업이나 자원 활용의 효율성이 좋다. (장점) 각 프로세스는 독립적이기 때문에, 한 프로세스에서 문제가 발생해도 다른 프로세스에 전달되지 않는다. 즉, 한 화면에 문제가 생겨서 종료해도 다른 크롬 화면에 미치는 영향이 적다. (단점) 모든 스레드는 자원을 공유하기 때문에 한 스레드에 문제가 생기면..

CS/OS 2021.08.07

[OS] 멀티태스킹, 멀티프로세싱, 멀티스레드

멀티태스킹, 멀티프로세싱, 멀티스레드 각각의 특징과 차이에 대해 알아보자. 이를 이해하기 위해서는 먼저 프로세스, 스레드 그리고 병렬처리에 대한 개념을 알고 있어야한다. 프로세스(Process)란, 저장장치의 프로그램을 실행하어 메모리에 load 되어진 상태이다. 프로세스 = 프로그램 + 프로세스제어블록(PCB) 스레드(Thread)란, 프로세스의 코드에 정의된 절차에 따라 CPU에 작업 요청을 하는 실행 단위이다. 즉, 작은 단위의 일(Operation)이 모여 하나의 작업(Task)이 될 때, 이 작은 단위의 일을 수행하는 것을 스레드라고 할 수 있다. JOB > TASK > OPERATION == 작업 > 프로세스 > 스레드 병렬처리(Parallel Processing) 동시에 여러 명령을 수행하여..

CS/OS 2021.08.07

[OS] 인터럽트(Interrupt)란?

초기 컴퓨터 시스템은 CPU 작업 중 입출력장치에 데이터를 통신할 일이 생기면 이를 직접 수행하는 폴링(Polling) 방식이었다. 이 때, CPU에서 입출력에 관여하는데 시간이 소요된다는 시간문제가 있었는데 이를 해결하기 위해 등장한 것이 바로 인터럽트(Interrupt)방식이다. 기존의 폴링 방식때에는 CPU만이 메모리나 주변장치에 대한 권한을 가지고 있었는데, 인터럽트 방식에서는 이 권한을 입출력 관리자에게 부여하고, CPU는 본래 역할(명령어 해석, 실행)에 충실하여 작업의 효율을 높혔다. 이 때, 입출력 관리자에게 부여한 권한을 직접 메모리 접근(DMA)라고 한다. 인터럽트 동작과정 (1) CPU에서 프로세스 실행중 I/O요청 발생시 해당 프로세스를 대기 상태로 변경. 다음 프로세스 수행 (2)..

CS/OS 2021.08.07

[OS] 프로세스의 통신 (IPC: Inter-Process Communication)

프로세스는 실행되면서 다른 프로세스에 독립적(independent) OR 협력적(cooperating)이다. 여러 프로세스가 서로 협력적인 관계일 때는 프로세스간에 데이터를 공유하게 되는데, 이 때의 통신을 IPC (Inter-Process Communication) 이라고 한다. 즉, IPC란 프로세스간에 데이터를 주고(send) 받는(receive)것을 말한다. 특정 A프로세스에서 생산하면 (Producer) 이를 B프로세스에서 소비하는 (Consumer) 협동적인 프로세스간 구조에서의 데이터 통신 방법 2가지를 알아보자. IPC 통신방법 1) 공유메모리 사용 (Shared Memory) : memory 내부에 여러 프로세스에서 접근할 수 있는 공유메모리에 buffer를 만들어 생산자(Producer..

CS/OS 2021.07.29