본문 바로가기
반응형

CS(Computer Science)55

[운영체제] CPU 프로세스 관리 CPU는 여러 종류의 job을 섞어서 하기 때문에 CPU 스케줄링이 필요하다. 스케줄링의 목적은 Interactive job이 너무 오래 기다리지 않게 하고 CPU와 입출력 장치 같은 자원을 효율적으로 사용하는 것이다. I/O bound process: cpu는 짧게 쓰는데 빈도가 잦다 CPU bound process: cpu만 오랫동안 쓴다 운영체제 기능 cpu 스케줄러: ready 상태의 프로세스 중에서 이번에 cpu를 줄 프로세스를 고른다 dispatcher: cpu를 스케줄러에 의해 선택된 프로세스에게 넘기는 역할 nonpreemptive: 강제로 빼앗지 않고 자진 반납 preemptive: 강제로 빼앗음 ※ 앞으로 자주 보게 될 개념 자료출처 ABRAHAM SILBERSCHATZ ET AL., .. 2023. 1. 29.
[운영체제] 프로세스 시스템 콜 종류 & 프로세스 협력 프로세스의 생성과 종료의 시스템 콜 종류들 fork() 시스템 콜과 exec() 시스템 콜을 C로 구현한 코드이다 int main() { int pid; pid=fork(); if (pid==0) printf("I am child"); execlp("/bin/date","/bin/date",(char *) 0); else if (pid>0) printf("I am parent"); } fork() 시스템 콜로 복제를 할 때는 결괏값을 달리해 부모 프로세스와 자식 프로세스를 구분한다. 부모는 리턴 값이 양수이고 자식은 0이다. 중간에 exec() 시스템 콜을 통해 다른 프로그램을 실행시켜 다른 프로세스처럼 역할을 할 수 있다. wait() 시스템 콜 프로세스A가 wait() 시스템 콜을 호출하면 자식 프로.. 2023. 1. 29.
[운영체제] 프로세스 생성과 종료 프로세스 생성 부모 프로세스가 자식 프로세스를 생성할때 운영체제에게 요청해 프로세스의 트리 구조가 형성된다. 프로세스가 실행 되기 위해서는 자원이 필요한데 이 자원은 운영체제로부터 받고 부모와 공유한다. 보통은 자원을 공유하지 않는다. 부모와 자식이 공존하는 모델과 자식이 종료될 때까지 부모가 기다리는 모델이 있다 프로세스를 생성하는 방법은 복제생성이다. 먼저 부모 프로세스의 주소 공간, 운영체제의 pcb와 자원을 똑같이 복사한다. 복제 생성을 하게 되면 같은 일만 하게 되는데 여기서 일단 복제를 하고 새로운 프로그램을 올리는 식이다. 두 가지 단계로 나눠지는데 fork 시스템 콜로 새로운 프로그램 생성한다. 다음 단계로 exec 시스템 콜을 통해 새로운 프로그램을 메모리에 올리는 것이다. 프로세스 종료.. 2023. 1. 29.
[네트워크] 애플리케이션 계층 - 소켓, TCP, UDP 소켓이란? 소켓: 클라이언트 프로세스와 서버 프로세스의 통신이다 소켓이 통신하는 원리를 알아보자 1. socket: 웹 서버가 소켓을 생성한다 2. bind: 특정 포트에 연결한다 3. listen: 이 용도로 사용하겠다 4. accept: 클라이언트로부터 요청받을 준비 됐다, 여기서 클라이언트의 ip와 port를 저장한다, 서버는 클라이언트로부터 커넥션이 들어올 때까지 멈춰있는다. 5. 클라이언트 요청이 들어오면 연결 6. 데이터를 주고받는다 7. 통신 끝나면 close 시켜준다 ※ 클라이언트는 아무 port나 사용해도 돼서 bind가 필요없다 TCP와 UDP의 역할 멀티플렉싱: 여러 소켓으로부터 데이터를 모으는것, 헤더로 데이터를 감싼다 디멀티플렉싱: 받은 세그먼트를 배달하는 것 - 세그먼트를 메시지.. 2023. 1. 29.
[네트워크] 컴퓨터 네트워크 기본 지식 인터넷 전송서비스 TCP - 신뢰성, 순서대로, 속도에 맞게, 혼잡 조절, 비용이 든다 - 데이터 유실되면 재전송 - ex) 중요한 서류 보낼 때 사용하는 등기우편 UDP - 비신뢰성, 연결성, 데이터가 유실돼도 괜찮을 때 - ex) 보이스톡, 일반우편 ※ 프로토콜: 서로간의 약속 packet-switching - 현재 인터넷 방식 - 라우터를 거치면서 한 묶음으로 다니는데 계속 클릭하지 않고 뉴스보고 다음뉴스 보고 이런 식 - 분산되서 사용, 제한 없다 - 단점: 동시에 접속하면 문제발생 circuit switching - 유선전화망, 미리 설치해놓음 processing delay: 패킷 검사하고 목적지 확인까지의 시간지연 transmission delay: 큐에서 나가는데 시간 propagation .. 2023. 1. 28.
[운영체제] 스레드 Thread란? 프로세스 내부의 cpu 수행 단위가 여러개인 경우 한 단위 프로세스가 하나 주어지면 주소공간이 프로세스별로 생성이 된다. 이를 관리하기 위해서 운영체제 내부의 pcb를 두고 있다. 이때 메모리를 효율적으로 사용하기 위해 스레드를 사용하면 프로그램 카운터만 여러개두고 나머지는 공유해 공간을 아낄수 있다. - Thread 구성: program counter + register set + stack space - 스레드가 동료 스레드와 공유하는 부분: code section + data section + OS resources 프로세스안에 여러개의 쓰레드를 두는게 더 가볍다 다중 스레드 장점 하나의 서버 스레드가 blocked 상태인 동안에도 동일한 태스크 내의 다른 스레드가 실행되어 빠른 처.. 2023. 1. 27.
[운영체제] 프로세스 프로세스의 문맥 1. cpu 수행 상태를 나타내는 하드웨어 문맥 2. 프로세스의 주소 공간 - code, data, stack 3. 프로세스 관련 커널 자료 구조 - pcb - kernel stack ※ 커널스택을 프로세스별로 별도로 두고 있다. PCB(Process Control Block): 운영체제가 각 프로세스를 관리하기 위해 프로세스당 유지하는 정보 (1) os가 관리상 사용하는 정보 (2) cpu 수행 관련 하드웨어 값 (3) 메모리 관련 (4) 파일 관련 프로세스 상태 1. Running: cpu 잡고 instruction 수행 중인 상태 2. Ready: cpu 기다리는 상태 3. Blocked: cpu 주어도 당장 instruction을 수행할 수 없는 상태 - process 자신이 요청.. 2023. 1. 26.
[운영체제] 입출력 & 프로그램의 실행 동기식 입출력: 입출력 요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감 ● 구현방법 1: cpu 가지고 있으면서 기다리기 - 입출력 끝날 때까지 cpu 낭비시킴 - 매시점 하나의 입출력만 일어날 수 있음 ● 구현 방법 2: cpu 다른 프로세스한테 넘겨주기 - 입출력이 완료될 때까지 해당 프로그램에게서 cpu를 빼앗음 - 입출력 처리를 기다리는 줄에 그 프로그램을 줄 세움 - 다른 프로그램에게 cpu를 줌 비동기식 입출력: 입출력이 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감 정리 프로세스가 입출력동안에 인스터럭션 실행 안하고 기다리면 동기이고 입출력을 요청하고 입출력 이전에 인스터럭션 바로 실행하면 비동기다 저장장치 계층 구조 ● 위로갈수록.. 2023. 1. 26.
[운영체제] 시스템 구조 시스템 구조 CPU: - CPU스케줄링: CPU 큐에 기다리고있을때 어떤 프로그램에게 CPU 사용권을 줄까 - 작업할때 필요한 용량 메모리에 올려놓고 사용 - 메모리에서 인스터럭션 읽어서 실행 - cpu안에 register, mode bit(v프로그램 구분) 존재 ※ mode bit: 사용자 프로그램의 잘못된 수행으로 다른 프로그램 및 운영체제에 피해가 가지 않도록하기위한 보호장치 - 0 모니터모드: 커널모드 운영체제 수행 - 1 사용자모드: 사용자 프로그램 수행 - 중요한 명령은 모니터모드에서만 가능 - 인터럽트 발생시 하드웨어가 모드빗 0으로 바꿈 - 사용자 프로그램에 cpu넘기기전에 모드빗 1로 셋팅 - 제한된 지시만 실행가능 메모리: cpu 작업공간, cpu만 접근 가능 - 한정된 메모리를 어떻게.. 2023. 1. 26.
728x90