1. 변수란? 자바스크립트의 변수를 설명하기 전에 변수의 정의 먼저 설명해보려고 한다. 변수는 ‘어떠한 데이터를 저장하기 위한 공간’이다. 이때 데이터는 숫자가 될 수도, 문자열이 될 수도 있고, 자바스크립트에서는 함수까지도 데이터가 될 수 있다. 이러한 데이터를 저장하기 위해서는 메모리에 저장할 공간을 할당해주어야 한다. 이때 메모리는 LAM(Landom Access memory)이기 때문에 랜덤으로 공간을 할당 받는 방식이고, 랜덤하게 메모리 주소를 할당받아 데이터를 저장하는 것이 변수이다. 랜덤으로 할당받는다는 것은 가용 메모리 공간의 주소를 랜덤으로 변수에 할당하고, 그 주소에 데이터를 넣는 것이라고 할 수 있다. 즉, 변수는 메모리 상에 저장할 주소의 값을 가져와서 거기에 데이터를 할당하는 것을..
Scheduling이란? 스케줄링은 어떠한 자원을 한 순간에 여러 사람이 동시에 사용하고 싶을 때, 누가/어떤 작업이 해당 자원을 사용할 수 있게 할지 순서를 정해주는 것이다. 따라서 Process Scheduling은 어떤 프로세스를 먼저 선택해서 CPU를 줄 것인지 결정하는 것이다.(CPU에 올라가야 프로세스가 수행되므로~) 프로세스의 상태와 관련하여 설명하자면 ready 상태에 있는 프로세스 중 어떤 프로세스를 CPU에 올려 running 상태로 만들지 결정하는 것이다. 스케줄링의 기준은 여러가지가 있고, 운영체제마다 다른 스케줄링 방식을 사용한다. 지금부터 여러 스케줄링 방식에 대해 배우고 그에 대한 성능을 분석할 예정이다~ Metrics 스케줄링할 때 여러가지 비교 지표가 존재한다. 아래의 각 ..

Limited Direct Execution를 설명하기 전에 CPU 가상화를 잠깐 설명하자면, CPU 가상화는 실제로 물리적인 CPU는 한 개(요즘은 여러개) 이지만 프로세스들을 Time sharing, 즉 시분할 기법을 통해 번갈아가며 수행함으로써 마치 동시에 수행되는 것처럼, CPU가 여러개 존재하는 것과 같은 환상을 제공하는 것이다. 이 때, 두 가지 이슈가 존재 하는데 첫 번째는 성능 이슈이다. 즉, ‘프로세스를 번갈아가며 수행하기 위해 필요한 비용을 어떻게 최소화 할 것인가’ 이다. 두 번째는 제어 이슈로 한 프로세스가 CPU를 조금 사용하고 다른 프로세스로 넘어가기 위해서는 OS의 제어가 필요한데, 이 때 ‘어떻게 OS가 CPU의 움직임을 효과적으로 제어할 수 있는가’ 이다. Direct Ex..

이번 포스팅에서는 Process에 대한 전반적인 개념들에 대해 다룬다. Process 란? Disk에서 올라와 메모리와 CPU에서 동작하고 있는 프로그램 scheduling 객체 *프로그램(program) : Disk에 있는 ‘수행하기 전’의 상태, 수동적이며 ‘바이너리’라고 불린다. *scheduling : 프로세스가 메모리에서 CPU로 번갈아 올라가는 것을 말한다. 한 개의 CPU에는 한 개의 프로세스밖에 올라가지 못하므로 순서를 결정해 CPU로 올리는 스케줄링이 필요하다. 이후에 자세히 다룰 예정 Process States 프로세스는 현재 어떤 상황인지에 따른 ‘상태’를 가진다. 프로세스의 **State(상태)**는 5가지이며, 상태에서 상태로 전이되는 Transition은 6가지 이다. 추가로 M..

운영체제란? 컴퓨터 하드웨어 ‘바로 윗단’에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 SW계층이다. 좁은 의미의 운영체제 : 커널 운영체제의 핵심 부분 부팅 후에 항상 메모리에 상주하는 부분 넓은 의미의 운영체제 : 커널 + 각종 주변 시스템 유틸리티 커널이 아닌 SW는 항상 메모리에 상주하는 것은 아니다. ex) windows를 설치하면 여러 부가적인 프로그램이 포함된다. 여기서 커널이란? 컴퓨터 시스템은 운영체제를 다른 SW로부터 보호하기 위해 “mode”를 제공한다. 이때의 모드는 user mode와 kernel mode가 있다. 컴퓨터 시스템은 커널 모드의 높은 특권을 통해 운영체제를 보호한다. user mode에는 사용자 프로그램이 존재하며 kernel mode에는 실제 O..