목차 📂content 1. 프로세스 생성 사람은 자식을 낳으면 아이부터 시작해서 자라는데, 프로세스는 부모 프로세스가 자식 프로세스를 낳으면 복제 생성을 하게 된다. 부모와 같은 나이를 가진 프로세스가 하나 생긴다. 프로세스를 만드는 행위는 사용자 프로세스가 아닌 운영체제가 한다. 직접 못 하는 것은 시스템 콜을 해서 운영체제에게 부탁한다. 프로세스에서는 부,모가 따로 있는 것이 아니다. 하나가 복제 생성을 해서 만들어져서 트리 구조이다. 프로세스는 자원을 필요로 한다. 자원은 운영체제에게 받는데, 경우에 따라서는 부모 프로세스와 자원을 공유하는 경우가 있다. 앞에서 스레드들끼리는 자원을 공유한다고 했다. 하나의 프로세스 내부에 여러 스레드가 있어서 자원을 공유함. 부모가 자식을 낳으면 사실 두 개(부모..
목차 📂content 프로세스의 관리3 1. 스케줄러 운영체제의 함수, 또는 코드 중의 일부분인데 역할이 나누어져 있어서 그냥 스케줄러라고 부르는 것. 그래서 스케줄러는 그냥 운영체제다!라고 보면된다. 장기 스케줄러 : 메모리는 사실 스케줄이 필요하지 않지만 그냥 메모리 스케줄러라고 보아라. (프로세스 상태도 참고하기) 프로세스가 처음에 만들어 질 때, 바로 ready상태가 되는 것이 아니고, new에 있다가 admitted되면 ready 상태로 넘어온다. 이때 이 admitted 해주는 것이 장기스케줄러. 즉, 프로세스가 여러개를 실행시켰다고 했을 때, 무조건 다 cpu를 얻을 수 있는 것이 아니고 메모리에 당장 필요한 부분이 올라와야지만 cpu 기계어 실행이 가능하다. 처음에 프로세스가 시작될 때 메..
목차 📂content 1. 프로세스의 개념 프로세스 : 실행중인 프로그램 프로세스의 문맥 문맥 : 이 프로세스가 어떤 상태에 있는 가. 이때 상태가 문맥. 그래서 문맥은 시간의 흐름에 따라 바뀐다. 현재 상태는 꼭 현재에 의해 결정되는 것은 아니고 과거에 의해 결정될 수도 있다. 운영체제가 매우 중요하게 생각함. 스택을 보면 현재 함수가 몇 개가 호출했고, 몇 개가 실행되고 있는지 알려줌. pcb : 각각의 프로세스를 운영체제가 관리하면서 가지고 있는 자료구조 2. 프로세스의 상태 cpu가 하나 밖에 없기 때문에 cpu에서 기계어를 실행하고 있는 프로세스는 매 순간 하나이다. 이 프로세스를 running 상태에 있다고 한다. cpu를 쓰고 싶은데 하나밖에 없으니까 누군가는 기다려야하는데 그 상태에 있는 ..
목차 📂content 1. 프로그램의 실행(메모리 load) 프로그램이 실행되는 단계를 보여주는 그림 실행 파일을 실행시키면 메모리에 올라가서 프로세스가 된다. 운영체제 kernal이 기본적으로 메모리에 올라가 있다. 사용자 프로그램들은 실행을 시킬때 메모리에 올라가서 프로세스가 되는 것. 사실은 중간에 virtual memory라는 단계를 거친다. 버추얼 메모리 : 프로그램이 실행될 때는 그 프로그램만의 독자적인 주소 공간(address space)이라는 것이 만들어진다. 실제로 존재하는 것이 아니라 머리속에 존재하는 것. 당장 필요한 부분은 물리적인 메모리에 올라가게 되고, 그렇지 않은 부분은 swap area라는 부분에 올라간다. 물리적인 주소와 논리적(virtual) 주소는 다르기 때문에 주소 변..
목차 📂content 0. Intro cpu program counter가 가리키고 있는 메모리 위치에서 매 순간기계어를 읽어서 실행함. program counter cpu 안에 있는 register 중 하나. 기계어 하나를 실행하고 나면 그 다음 위치를 가리켜서 다음 기계어를 읽어와서 실행한다. 단! 프로그램은 시작과 끝까지 항상 동일한 순차적인 로직을 가지고 실행되지 않는다. 조건 만족 여부에 따라서 다른 기계어가 실행될 수도 있다. 그래서 c언어를 사용할 때 if문, 반복문을 돌면 항상 바로 다음으로 넘어가지 않고, 그 다음으로 넘어가거나 함수를 이용해서 위치가 점프된다. 인터럽트가 들어오면 프로그램 카운터가 어디를 가리켰는지 모르지만, 무조건 프로그램 카운터는 운영체제의 위치를 가리키도록 정해져있..
목차 📂content 1. 컴퓨터 시스템 구조 메모리도 device이기 때문에 전담하는 controller가 붙어있다. controller들도 작업 공간들이 있는데, 이 것을 local buffer라고 한다. cpu가 운영체제에 의해서 실행이 될 때는 머든 상관없음. (운영체제는 컴퓨터를 관리하기 위해 만들어진 것이기 때문) 그런데 운영체제가 사용자 프로그램에게 cpu를 넘겨줄 때는 사용자 프로그램이 무슨 짓을 할 지 모름(예를 들어 cpu를 독점한다거나, 메모리를 많이 쓰도록). 일단 cpu를 넘겨주면 운영체제는 그것을 제어할 길이 없다. cpu에서 기계어를 실행할 때, 지금 운영체제가 실행하는 것인지, 사용자 프로그램이 실행하는 것인지 구분하는 것을 두고 있다. 그것이 바로 mode bit이라는 것이..
목차 📂content 0. Intro cpu는 컴퓨터의 두뇌라고는 하지만 교수님피셜 컴퓨터의 두뇌는 사실 운영체제이다. cpu는 기계어를 대단히 빠르게 실행하는 역할은 하지만 본인이 무엇을 생각하지는 못한다. 한정된 메모리에 여러 프로그램이 동시에 올라간다. 프로그램마다 메모리를 조금씩 나누어 주어야한다. 부처에 돈을 줄때 n분의 1씩 나누어 주는 것이 아니라 정부가 중요한 분야에 집중투자하는 것 하여 성장을 이끌어내어 다음에 또 다른 것에 투자하는 것처럼 메모리도 같다. 필요할때 특정 프로그램에게 메모리를 몰아주는 것이 컴퓨터를 더 효율적으로 돌아가게 만든다. 1. 운영체제의 분류 1-1. 동시 작업 가능 여부 1-2. 사용자의 수 다중 사용자 : 한 대의 컴퓨터에 여러 사용자가 동시에 접속해서 사용 ..
목차 📂content 1. CPU 스케줄링 1-1. FCFS(First-Come First-Served) 초록색 원은 여러 프로그램들이 cpu를 사용하기 위해 cpu큐에 서서 기다리는 것 cpu를 사용하기 위한 프로세스는 p1, p2, p3 도착 순서는 p1, p2, p3 모든 프로그램은 cpu와 i/o 장치를 쓰는 것을 반복한다. 그래서 p1은 지금 cpu를 24초 쓰겠다고 하는데, cpu를 24초 쓰고 나면 i/o를 하러 가고, i/o 끝나면 cpu에 줄 서고 이런 식이 반복됨 이 그림은 선착순으로 처리해준다고 하는 것 ⇒ 이 것은 효율적이지는 않다. p1이 먼저 왔을 경우 평균 기다리는 시간이 17초 이번에는 p2가 먼저 도착했다고 가정했더니 평균 기다리는 시간이 3초가 나옴. 1-2. SJF(Sh..
목차 📂 content 1. 운영체제란 무엇인가? 컴퓨터 하드 웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층 • 사용자가 컴퓨터 하드웨어에 대한 자세한 사항을 몰라도 편하게 사용할 수 있는 역할을 함. • 운영체제는 하나의 소프트웨어인데 다른 응용소프트웨어들과는 다르게 하드웨어(CPU, 메모리, 하드디스크)를 직접 관리하고 사용자들에게는 편리한 인터페이스를 제공해주기 때문에 까다로운 소프트웨어이다. 2. 운영 체제의 목적 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공 - 운영체제는 동시 사용자 / 프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상(illusion)을 제공 • 현대 컴퓨터 시스템은 프로그램 하나만 컴퓨터에서 돌아가는 것이 아니..
🛠️참고사항 1. Notion에서 옮김 날짜 제목 링크 태그 [ch1]운영체제의 개요1 https://izzy.tistory.com/272 [ch1]운영체제의 개요2 https://izzy.tistory.com/273 [ch2]컴퓨터시스템의 구조1,2 https://izzy.tistory.com/280 [ch2]컴퓨터시스템의 구조3 https://izzy.tistory.com/281 [ch2]컴퓨터시스템의 구조4 https://izzy.tistory.com/282 [ch3]프로세스 관리1 https://izzy.tistory.com/284 [ch3]프로세스 관리2 https://izzy.tistory.com/285 [ch3]프로세스 관리3,4 https://izzy.tistory.com/286 [ch3]..