Computer Science

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와 같은 운영체제와 동시에 ..
유선 이더넷 네트워크와 다르게 무선 네트워크는 치명적인 단점이 존재한다. 바로 유선과 다르게 collision detection이 안된다는 것이다. 그 이유에는 아래와 같이 3가지가 있다.Fading and Signal Strength Variations무선시그널은 거리에 매우 취약하다. 장애물이나 환경적 요인에 의해 신호 강도가 계속해서 변하기 때문이다. 따라서 거리가 멀리 떨어져있을 경우 collision을 탐지하지 못할 수 있다.Hidden Node ProblemA, B, C 3가지 디바이스가 있다고 할 때 A,B,C는 서로의 통신이 안되는 상태이다. 이때 A와 B가 동시에 C에게 데이터를 전송하면 C에서 collision이 발생하지만 a,b는 collision 이 발생했는지 알 길이 없다. 이때 ..
지난 강의까지 네트워크 레이어를 다루었다. 이번시간부터는 링크레이어를 다룬다.  여러 클라이언트가 게이트웨이 라우터에 함께 진입한다. 이때 네트워크 계층에서 패킷을 보내면 도식화된 그래프처럼 한 줄로 쭉 연결되서 가는 것이 아닌 여러 컴퓨터들이 네트워 계층에 물려 진행된다. 이때 서로 다른 클라끼리 collision이 발생하여 신호가 섞일 수 있다. Link 레이어는 클라끼리 충돌발생을 막는 역할을한다 혹은 충돌이 발생했을 때 문제를 해결한다. 이러한 일이 링크레이가 맡는 가장 주요한 일이다.  트랜스포트레이어와 네트워크레이어는 OS내부에 코드로 구현되어 있다. 링크레이어부터는 하드웨어 단으로 가는데 바로 Network Interface Card(NIC) 에 위치하고 있다. 링크레이어는 프레임을 내려보낸..
이전의 Transport 레이어까지 세그먼트를 보내는데 있어서 유실되면 다시 재전송하는등 어떻게 reliable한 transfer를 할 것 인가에 집중했다면 IP부터, 즉 Network 레이어부터는 어떻게 패킷을 receiver에 안전하게 보낼 것인가에 대해 다룬다. 따라서 네트워크레이어의 IP는 패킷을 어떻게 목적지까지 배송할 것인가라는 역할을 맡는다.  이전에 말한 것처럼 라우터가 패킷을 받으면 패킷을 검사하는 시간을 가진다. 여기서 패킷의 목적지, 헤더의 checksome을 통해 에러 유무를 확인한다. 여기서 소요되는 시간을 Processing Delay 라고 배웠었다. 결국 라우터의 핵심적인 일은 패킷을 받으면 어디로 패킷을 보낼지 방향을 설정하는 것이다. 이렇게 올바른 목적지로 쏘는 작업을 fo..
flutter developer
'Computer Science' 카테고리의 글 목록