Computer Science/Operating System

Address메모리에는 주소가 있다. 이러한 주소에는 두가지 종류, 가상메모리주소와 물리적 메모리 주소가 있다. 프로그램이 실행되면 프로세스가 되며 독자적인 주소공간이 형성된다. 이때 효율적인 메모리 사용을 위해 CPU는 가상메모리(logical address, virtual address)를 참조하고 가상메모리는 실제 메모리(physical memory)를 참조하게 된다. 이러한 엮여있음을 주소바인딩이라고 한다.  가상 메모리에서 물리적 메모리로 주소변환이 되는 순간은 크게 3가지 시점으로 나누어 볼 수 있다.  Compile time binding 컴파일 시점에 물리적 메모리 주소가 결정된다. 가상메모리 주소가 사실상 물리적 메모리 주소. 컴파일 바인딩에 의해 만들어진 코드를 절대코드(absolute..
Deadlock데드락은 4가지 조건을 만족시킬 때 발생한다. Mutual Exclusion(상호배제)한 프로세스 자원을 얻으면 해당 자원을 독점적으로 사용한다. No preemption (비선점)자원을 가지면 빼앗기지 않음  Hold and wait다른 자원을 점유하기 위해 기다릴 때는 내가 들고 있는 자원을 점유한 상태에서 기다린다. Circular wait자원을 기다리는 프로세스끼리 참조순환이 되어야만함사각형R은 자원, 동그라미P는 프로세스이다. 작은 점은 자원의 인스턴스 갯수를 의미한다. 화살표를 따라갔을 때 만약 사이클이 형성이 안된다면 데드락이 아니다. 만약 사이클이 있고, 자원당 인스턴스가 하나만 있으면 데드락, 자원당 인스턴스가 여러개라면 데드락 가능성이 있는 상태이다.(만약 자원당 인스턴스..
병행제어MultiLevel Queue란 Ready queue를 여러개로 분할하는 것을 말한다. Multi level Queue에서는 큐의 종류를 두가지로 나눈다. -> foreground / background. 큐를 나누는 기준은 사용자와 ineteract를 하는경우에 foreground 큐에 그렇지 않은 경우에 background 큐에 둔다. forground는 사용자와 interactive하기 때문에 더 많은 CPU time 을 준다. 보통 Time slice로 RR알고리즘을 사용하여 80%는 foreground, 20%는 FCFS 알고리즘으로 background에 할당하여 starvation을 방지한다. Multi level feedback queue 는 기존의 multilevel queue보다 ..
CPU & I/O Burst프로그램 실행은 결국 CPU로 작업하는 단계와 I/O 작업을 하는 단계를 연속해서 지나가는 과정이다. 여기서 CPU burst는 CPU가 기계어를 해석하고 있는 단계, I/O하는 단계를 I/O burst라고 부른다. 프로그램별로 burst의 간격은 다르다. 주로 사람과 ineract하는 프로그램이 위처럼 버스트가 번갈아 등장한다. 연산량을 많이 필요로하는 작업은 CPU Burst의 간격이 넓어지게된다. 만약 I/O를 길게 쓰는 프로그램이 있다면 I/O bound job(process) 라 부르고 , CPU를 길게 쓰는 프로그램을 CPU bound job(process)이라고 부른다. 이 때 Burst Time 종류에 따라 CPU 우선권이 다르게 주어진다. I/O bound jo..
프로세스의 생성프로세스는 부모 프로세스에 의해 만들어져 자식 프로세스가 만들어지는 구조이다 (최상단 부모 프로세스는 init 프로세스로 부팅 과정에서 커널에 의해 생성되는 첫 번째 사용자 공간 프로세스). 이렇게 되다보니 자연적으로 프로세스 트리가 형성된다. 이때 자식 프로세스끼리는 자원을 공유하기도 하지만 보통은 서로 독립적인 프로세스로 CPU를 두고 경쟁하지 기타 자원 공유는 잘 하지 않는다.  프로세스가 생성될 때 자식 프로세스는 부모프로세스의 공간을 복사하고 자신만의 데이터를 위에 올리게된다. 여기서 복제는 fork() 메서드에 의해, 복제한 데이터 위에 자기 데이터를 올리는건 exec() 메서드로 시스템 콜을 하여 새로운 프로그램에 메모리를 올리게 된다.프로세스의 종료 (Termination)..
Process 란?Process란 실행중인 프로그램이다. 하드디스크에서 가상메모리를 거쳐 램메모리에 올라온 상태라고 볼 수 있다. CPU의 PC(Program Counter)는 램메모리에 올라온 프로세스의 코드/데이터/스택중 코드 한 부분을 포인팅을 하고 CPU는 PC가 포인팅 해주는 명령어를 읽어가며 작업을 처리한다.  이때 CPU의 PC가 프로세스의 어느부분을 가리키고 있는가, 다시말해 프로세스 전체 작업중 어느 부분을 지나가고 있는가를 프로세스의 문맥(context)이라고 부른다. 항상 메모리에 상주해있던 커널은 프로세스가 하나씩 올라올 때마다 커널의 코드/데이터/스택 중 데이터 공간에서 PCB(Process Control Block)를 통해 프로세스를 관리한다. 또한 특정 프로세스가 운체에게 시스..
운영체제란?운영체제란 컴퓨터 하드웨어 바로위에 설치되어 사용자 및 다른 소프트웨어와 하드웨어를 연결하는 계층이다. 컴퓨터 하드웨어를 직접적으로 다루면 매우 어렵고 복잡하기 때문에 운영체제라는 중간다리를 만듦으로서 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공한다. 또한 운영체제는 실행중인 프로그램을 메모리 공간에 적절히 분배함으로서 컴퓨터 시스템의 자원을 효율적으로 관리한다. 엄밀히 따지자면 좁은 의미의 운영체제는 "커널"이라 부르며 항상 메모리에 상주하는 부분을 의미한다. 넓은 의미의 운영체제는 커널 뿐 아니라 메모리 상주하지 않는 주변 유틸리티 시스템을 포함하는 개념이다. 운영체제는 동시작업 가능 여부로도 분류할 수 있다. 한 번에 하나의 작업만 처리하는 MS-DOS와 같은 운영체제와 동시에 ..
flutter developer
'Computer Science/Operating System' 카테고리의 글 목록