Computer Science 41

[CN] 1장: Network edge: Hosts, access network, physical media

Network edge: Hosts, access network, physical mediaHostsft">클라이언트, 서버 모두 호스트임, 네트워크 엣지에 속함응용 애플리케이션 메시지를 L 비트의 패킷으로 나눔패킷을 R 속도로 네트워크에 전송패킷 전송지연 = L비트 패킷 전송시간 = L/R패킷을 나누는 이유→ 분산 처리에 용이하기 위해서한 번에 보내면 에러 발생했을 때, 다시 처음부터 다 될 때까지 보내야 하는 것도 문제Access Network주파수 대역: 도로채널: 차선서버 → 유저 = 하향식 스트림유저 → 서버 = 상향식 스트림하향식 스트림이 훨씬 빠름→ 우리가 보내는 것보다 받는게 많기 때문Physical Media유도 = 유선, 비유도 = 무선꼬임 쌍선2개의 절연 구리선 + 나선전화망에서 많이..

[OS] MLFQ (Multi-Level Feedback Queue)

반환시간, 응답시간 둘 다 최소화하고 싶음MLFQ 설명 및 규칙 + 예제 3개여러 개의 큐로 구성각 큐마다 우선순위가 부여됨높은 우선순위 큐의 작업이 먼저 선택됨우선 순위가 높은 프로세스 작업이, 우선순위 높은 큐에 들어감하나의 큐 안에서는 동일한 우선순위로, RR 방식으로 동작함그러면 낮은 우선순위 큐에 들은 프로세스는 기아 상태 ?우선순위는 어떻게 바꿀래 ?예제 1번3개의 멀티 큐가 있을 때,A 작업이 들어오면 룰3에 의해 젤 높은 우선순위타임슬라이스 끝나면 Context Switch되면서 다음 단계로 내려감근데, 같은 PID면 Context Switch 생략, 우선순위만 낮아짐또 타임 슬라이스 지나서, 우선순위 낮아짐제일 낮은 우선순위 큐에서도 타임 슬라이스는 계속 동..

[OS] 운영체제 스케줄링 개요

T 반환시간 = T 끝난시간 - T 도착시간T 반응시간 = T 실행 시작 시간 - T 도착시간FIFO (먼저 온 애부터)처음 온 애부터 처리함SJF (최단 시간)반환 시간 관점에서 제일 좋은 성능임그러나, 도착 시간이 다르다면 ?T response 응답시간63.33secT turnarround 반환 시간103.33secSTCF (최소 잔여 시간 우선)SJF에 선점 기능 추가됨선점기능은 Context Switch 필요함→ 새로운 작업이 들어오면, 실행 중인 것과 비교해서 더 작은 애 부터 시작함→ 진행중인 작업 종료 시, 남은 작업 중 실행시간이 제일 짧은 것부터 시작반환 시간 | 응답 시간반응시간웹서버/DB에서 중요하게 생각응답시간시분할 시스템의 경우 중요함작..

[OS] Limited Direct Execution

CPU 가상화를 하려면 시분할 기법을 사용해야 함.시분할은 어떤 기준으로 ?프로그램이 CPU를 직접 실행했을 때 문제점 2가지를 알아보자. 문제점 1: 제한된 연산프로그램을 CPU에서 직접 실행시키면 빨리 동작하지만,프로그램이 나쁜 짓을 하거나, CPU를 뺏어야 할때 등에 제약이 걸린다.프로세스가 디스크에 대해 입출력하거나,메모리 추가 할당을 요구하는 것을 제한하지 않으면, 운영체제는 무의미하게 된다.이 때, 사용자 모드와, 커널 모드가 도입됨User Mode사용자 수준 레벨할 수 있는 일이 제한됨→ I/O 작업 등이 금지→ 허용 범위 밖의 메모리 접근 금지금지된 일을 하면 프로세스가 제거됨Kernel ModeOS에서 중요한 코드들이 실행됨운영체제 모든 종류의 동..

[OS] 프로세스 API in POSIX

Fork()자식 프로세스 생성하는 API부모의 주소공간, 레지스터.. 등의 내용이 복사되어 자식이 만들어짐int rc = fork();rc == 0: 자식 프로세스rc > 0: 부모 프로세스Wait()프로세스가 종료되지 않고, 대기하기waitpid()도 포함else 문의 부모 프로세스는 int wc = wait(NULL)을 통해자식 프로세스가 종료될 때까지 실행을 잠시 중지 시킨다.자식이 종료되면 Wait가 반환되는데, 자식 PID가 반환됨이러면 fork() 후에 프로세스가 마음대로 출력되던 상황을 방지함자식이 끝나야 부모가 동작하기 때문.Exec()자기 자신(부모 내용 복사)이 아닌, 다른 프로그램을 실행할 때 사용됨fork()와 달리 비어있는 새 프로그램을 적재하여 실행함if (rc == 0) { /..

[OS] 프로세스 개요

프로세스란 ?프로세스의 인스턴스로, 하드웨어에 있는 프로그램의 객체이다메모리에 올라가게 됨스택 영역지역변수, 파라미터, 리턴 주소데이터 영역전역변수, 정적변수힙 영역동적할당코드영역프로그램 코드 (2진수)프로세스 API 5가지운영체제가 제공하는 프로세스 API 5가지생성 - 프로그램 실행삭제 - 프로세스 삭제대기 - 프로세스 대기각종 제어 - 일시중지하고 다시 시작상태 - 프로세스 상태를 얻음프로세스 생성프로그램 코드를 메모리로 적재함 (Load)게으른 적재 방식을 사용함 → 모든 코드나 데이터를 메모리에 올리지 않고, 필요할 때마다 가져옴 프로그램은 디스크에 실행가능 파일로 저장되어 있음실행 시간 스택 할당 → 지역변수, 함수 매개변수, 리턴 주소 등등의 스택영역 초기화힙 생성 실행 도중 동적으로 요구되..

[OS] 운영체제 - 가상화, 병행성, 영속성

1장 Introduction운영체제가 일하는 3가지 카테고리가상 기계 (가상화)물리적인 자원을 ‘가상’ 형태로 전환때로는 운영체제를 가상머신 이라 부르기도 함API 제공자 사용자가 프로그램 실행, 메모리 할당, 파일 접근.. 등의 작업을 요청할 수 있도록 OS는 사용자에게 API를 제공 운영체제는 시스템 콜 제공자원 관리프로세스 2개가 자원에 동시 접근할 때 제한하고 한정OS 역할- 정확한 동작- 편리하고 효율적인 사용 지원정책과 기법을 사용하여 위 역할을 수행CPU가 어떻게 자원을 가상화 하는가 ?가상화하나의 CPU에서 매우 많은 시스템이 동작하는데CPU가 무한개처럼 보이는듯한 환상이 드는 효과병행성공유자원, 임계영역 관리영속성 각 프로세스가 작업한 결과물 저장가상화CPU 가상화 물리적인 하나의 CPU..

[프로그래머스] 미로 탈출 (Swift)

문제 이해 : 출발지를 찾고, 레버를 활성화 시킨 뒤 탈출을 해야 한다. 문제에서 최소 시간을 요구 했으므로 BFS를 사용할 거다. 출발지 -> 레버 찾는데 BFS 1회 동작, 레버 -> 도착지 찾는데 BFS 1회 동작으로 총 2회 BFS를 진행한다. 주요 로직 : Swift에서 문자열 파싱은 아직도 어렵다. 입출력은 다음과 같이 문자열들의 배열이 나온다. ["SOOOL","XXXXO","OOOOO","OXXXX","OOOOE"] Swift에서 문자열에 인덱스 접근이 불가능하기도 하고, separator도 없기 때문에 enumerated 메소드를 사용할 거다. Swift Enumerated enumerated() 메소드는 Array 내의 함수로, (n, x)로 이루어진 쌍의 튜플을 반환한다. n은 0에서..

[백준] 7576, 토마토 (Swift)

- 일반적인 bfs 사용 시 시간초과 발생 - Queue에 pop 하여 원소를 빼내지 말고, 인덱스적 접근을 할 것 (시간초과 확보 가능) - 입력으로부터 graph 만드는 능력이 아직 부족함 // 24년 겨울 알고리즘 스터디 // BOJ & 프로그래머스 // // Created by 박효준 on 1/10/24. // bfs 탐색 import Foundation let MN = readLine()!.split(separator: " ").map{Int(String($0))!} let M = MN[0], N = MN[1] var graph: [[Int]] = [] let mx = [0,0,-1,1], my = [-1,1,0,0] for _ in 0..= 0 && ny < M { if graph[nx][ny..