전체 글(52)
-
프로세스 상태와 스케쥴링
멀티프로그래밍과 Wait 각각 실행시간이 동일한 3개의 프로그램(프로세스)가 있고 Wait를 저장매체로부터 읽기에 소모되는 시간으로 가정하면 위와 같이 효과적인 프로그램사용이 가능. 이는 프로세스 상태를 체크하여 일어나는 것으로, 프로세스는 각각 running state, ready state, block state로 나뉨 위의 wait는 block state고, 위의 시간축에 작업이 예정되어 있는 것은 ready state, 실제 작업이 일어나는 동안의 상태를 running state라고 볼 수 있음. 각각은 구체적으로 세개의 Queue를 통해 작업을 관리할 수 있음. Round Robin 스케쥴러를 생각하면, state를 통한 세개의 큐에서 프로세스의 작업이 시분할 단위로 소요시간을 전부 사용하고 종..
2020.01.11 -
비동기적 처리 다루기 - Promise, async, await, Promise all, race
비동기적 처리는 동기와 다르게 작업의 순서를 정확히 파악하기 어려움. 또한 비동기적 처리의 반환되는 값에 관하여 이어지는 이벤트와 함수를 연결한다고 하면 callback함수를 많이 활용하게 되어 가독성이 떨어지고 에러 컨트롤이나 조건에 따른 분기를 설정하기 어려운 부분이 있음. Promise는 resolve와 reject를 통해 분기를 나누고, Promise객체를 리턴함으로써 비동기처리를 콜백에 비해 간결하게 처리할 수 있음. 아래는 setTimeout을 이용한 비동기 처리에 대한 promise 예시. increaseAndPrint: (parameter) => { return new Promise(async (resolve, reject) => { setTimeout(() => { const value ..
2020.01.11 -
동기적 처리 // 비동기적 처리
동기적 처리 : 시간축을 기준으로 작업이 순차적으로 처리됨 (배치 프로세스를 생각) 가령, 다섯개의 작업이 있고 순서대로 일어난다고 가정하면 첫번째 작업이 끝난 결과를 받기 전에는 두번째 작업이 일어나지 않음. 비동기적처리 : 시간축과 상관없이 모든 프로세스(웹에서는 리퀘스트 요청 내지는 함수호출등)가 순차적으로 시작되지만 리턴을 기다리지 않음. 따라서 각 프로세스는 실행시간과 관련없이 동시에 가깝게 요청이 일어나고 종료시간은 각 프로세스의 소요시간에 따라 다르게 리턴을 받음(엄밀히 말해서 동시에 일어나는 것은 아님), 일종의 시분할 시스템 + 스케쥴링 알고리즘과 비슷하게 여겨짐
2020.01.11 -
스케쥴링 알고리즘 기본
Process란? - 실행중인 프로그램을 일반적으로 일컬음, task, job 등과 혼용 프로세스: 메모리에 올려져서 실행중인 프로그램 코드 이미지(바이너리): 실행 파일, (ex: ELF format) 응용프로그램 != 프로세스 -> 응용 프로그램은 여러개의 프로세스로 이루어질 수 있다// 하나의 응용 프로그램은 여러 개의 프로세스(프로그램)가 상호작용을 하면서 실행될 수도 있음 프로세스 실행을 관리하는 것 - 스케쥴러 스케쥴링 알고리즘이란? 어느 순서대로 프로세스를 실행시킬까에 대한 결정 -> 시분할 시스템 // 멀티프로그래밍 등과 같은 부분을 적용 FIFO 스케쥴러 - 가장 간단한 스케쥴러 (배치 처리 시스템). 저장매체 IO작업이나 프린팅 작업등 없이 쭉 CPU를 처음부터 끝까지 사용한다. FCF..
2020.01.11 -
기계어와 어셈블리어 고급언어
고급언어: 일반적으로 언급되는 프로그래밍 언어 C언어, 파이썬, 자바 등 고급언어를 컴파일러가 어셈블리어로 번역 어셈블리어 : 컴파일러 부터 생성된 어셈블리어는 기계가 이해할 수 있는 형태로 번역됨 기계사고방식의 언어 어셈블러는 어셈블리어를 기계어로 번역 기계어: 기계어는 기수가 2인 숫자로 구성됨 숫자 단위 하나는 비트(bit) 컴퓨터가 이해할 수 있는 비트들의 집합 시스템 소프트웨어: 공통적으로 필요한 서비스를 제공하는 소프트웨어 운영체제, 컴파일러, 로더, 어셈블러 프로그램 -하드웨어간의 인터페이스 역할 High Level Language 기계어를 고도로 추상화한 표현으로써 인간이 이해하기 쉬운형태 프로그램을 개발한 기종에 상관없이 어느 컴퓨터에서든 실행가능한 형태 컴파일 과정에서 불필요한 inst..
2020.01.05 -
컴퓨터의 구성요소 및 역할
컴퓨터의 구성요소 - 입력 (Input) / 출력(Output) / 메모리(Memory) / 데이터패스(Data Path) / 제어유닛(Control) 구성요소별 역할 프로세서 - 메모리로부터 명령과 데이터를 얻음, 제어유닛은 프로그램 명령에 따라서 데이터패스, 메모리, 입/출력의 동작을 결정함. 메모리 - 실질적으로 데이터가 저장되는 공간 입력 - 데이터를 메모리에 쓴다 출력 - 메모리로부터 데이터를 읽는다. 프로세서의 역할 : CPU - 메모리로부터 명령어를 받아와 제어신호를 생성 - 컴퓨터 명령어(기계어)를 해석하고 연산함 - 컴퓨터 기술을 이끄는 원동력 - 인간의 두뇌와 같은 역할 GPU - 픽셀로 이루어진 영상을 처리하는 용도로 탄생 - 싱글코어는 CPU보다 저성능이지만 병렬적인 수천개의 코어가..
2020.01.02