🌿All posts 199

✏️ 5. 프로세스 스케줄링 (2)

강의 출처 : https://www.youtube.com/watch?v=r1JVA7yOPAM&t=1102s Basic Scheduling algorithms FCFS (First-Come-First-Service) RR (Round-Robin) SPN (Shortest-Process-Next) SRTN (Shortest Remaining Time Next) HRRN (High-Response-Ratio-Next) MLQ (Multi-level Queue) MFQ (Multi-level Feedback Queue) 이 중 현재 게시물에서는 1, 2를 다루겠습니당 1. FCFS First-Come-First-Service 선착순 알고리즘 (먼저 오는 프로세스한테 프로세서 할당) Non-preemptive s..

CS/OS 2021.05.10

✏️ [백준 10974] 모든 순열

1. 문제 www.acmicpc.net/problem/10974 10974번: 모든 순열 N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오. www.acmicpc.net 2. 접근 방법 순열을 만들면 됩니다용 range로 1부터 N까지의 list를 하나 만들어서 순열을 순서대로 만들면 사전순으로 출력됩니당 3. 코드 python def perm(n): global answer, visited if n == N: print(*answer, sep=" ") return for i in range(N): if not visited[i]: visited[i] = True answer.append(lst[i]) perm(n+1) visited[i] = False a..

Algorithm/Python 2021.05.10

✏️ 5. 프로세스 스케줄링 (1)

프로세스 스케줄링 (Process Scheduling) 프로세스가 실제로 시스템에서 어떻게 스케줄링이 되어 자원을 할당 받는지 1. 스케줄링을 하는 이유 ? 다중 프로그래밍(Multi-programming)이란, 여러 개의 프로세스가 시스템 내에 존재하는 것입니다. 따라서 자원을 할당 할 프로세스를 선택해야하는데요, 이 때 사용하는 것이 스케줄링입니다. 자원 관리에는 2가지가 있습니다. 시간 분할 (time sharing) 관리 공간 분할 (spacing sharing) 관리 시간 분할 관리란 ? 하나의 자원을 여러 스레드들이 번갈아 가며 사용하는 것입니다.프로세서(CPU)는 한 번에 프로세스 하나만 사용할 수 있기 때문이죵 따라서 프로세스 스케줄링(process scheduling)을 통해 프로세서 사..

CS/OS 2021.05.10

✏️ 4. 스레드 관리

스레드 관리 스레드의 개념 스레드의 구현 사용자 수준 스레드 : `n:1모델` 커널 수준 스레드 : `1:1 모델` 혼합형 스레드 : `n:m 모델` 1. 스레드(Thread)란? 자원은 공유하지만 제어요소들은 각각 가지고 있는 것. 자원을 공유하므로 좀 더 작업을 효율적으로 할 수 있음 여러개 CPU 코어 사용 가능 프로세스가 하는 일은 2가지가 있음. 자원 할당 자원 제어 -> 여기서 자원 제어 하는 것을 스레드라고 함! 하나의 프로세스에는 여러개의 스레드가 존재할 수 있다. 왜냐하면 제어는 여러개 있을 수 있으니까 하나의 프로세스에는 여러 개의 스레드가 존재할 수 있다. 하나의 프로세스 내에서 각각의 스레드는 리소스를 공유한다 리소스에 포함 되는 것 : 코드, 전역 데이터, 힙(메모리 공간: mal..

CS/OS 2021.05.09

✏️ 3. 프로세스 관리(2)

프로세스 관리 프로세스의 개념 -> (1) PCB(프로세스 관리 블록) -> (1) 프로세스 상태 변화 -> (1) 인터럽트 -> (2) Context switching -> (2) 4. 인터럽트 예상치 못한, 외부에서 발생한 이벤트 1) 인터럽트의 종류 I/O interrupt 키보드 or 마우스 사용으로 인한 인터럽트 (ex. 배그할 때 마우스 클릭한 경우) Clock interrupt CPU가 일을 할 때 clock발생할 때 Console interrupt 콘솔 창에 입력할 때 Program check interrupt 프로그램에 문제 발생할 때 Machine check interrupt 하드웨어에 문제 발생할 때 Inter-process interrupt 다른 프로세스에 의한 인터럽트 System..

CS/OS 2021.05.09

✏️ [백준 10973] 이전 순열

1. 문제 www.acmicpc.net/problem/10973 10973번: 이전 순열 첫째 줄에 입력으로 주어진 순열의 이전에 오는 순열을 출력한다. 만약, 사전순으로 가장 처음에 오는 순열인 경우에는 -1을 출력한다. www.acmicpc.net 2. 접근 방법 1. 뒤에서부터 x > y인 부분 찾기 2. y_idx 이후부터 끝까지 중 : x보다는 작으면서 가장 큰 값(max)을 찾음 3. max와 x를 swap 4. max_idx 이후부터 맨 마지막까지 역 sort -> 다음 순열이랑 달리 2번에서 x보다는 작으면서 라는 조건이 들어가야하는데 이거를 간과해서 틀렸음 ^-^ㅠ 3. 코드 python def find(): global nums for i in range(len(nums)-1, 0, -..

Algorithm/Python 2021.05.09

✏️ [프로그래머스] 프린터

1. 문제 programmers.co.kr/learn/courses/30/lessons/42587?language=javascript 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr 2. 접근 방법 push, shift 메서드를 사용해서 풀었다. Math.max사용하려고 전개 구문 사용했다. 3. 코드 Javascript function solution(priorities, location) { var answer = 0; let queue = []; for (let i=0; i 0) { let now = pri..

✏️ [프로그래머스] 멀쩡한 사각형

1. 문제 programmers.co.kr/learn/courses/30/lessons/62048?language=javascript 코딩테스트 연습 - 멀쩡한 사각형 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 programmers.co.kr 2. 접근 방법 처음에 일차함수로 접근해서, 아래쪽 부분만 다 더해주고 *2로 해줬다. 근데 이렇게 할 경우 테스트 6번 빼고 모두 통과한다. 6번이 왜 안되는지 확인해봤더니, 기울기 값이 오차범위 때문에 일부 값이 손실되어서 반환 값이 다르게 나온다고 한다. ㅋㅋㅋㅋㅋㅋㅋㅋ ㅠㅠ 그래서 w, h 중 더..

✏️ [프로그래머스] 오픈채팅방

1. 문제 programmers.co.kr/learn/courses/30/lessons/42888 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr 2. 접근 방법 Object써서 key에 uid를 담고 value에 nickname을 담아서 nickname을 모두 갱신 한 다음, 각 명령에 맞는 메시지를 출력해줬다. 3. 코드 Javascript function solution(records) { var answer = []; let name = new Object() let temp = []; for (let..

✏️ [프로그래머스] 문자열 압축

1. 문제 programmers.co.kr/learn/courses/30/lessons/60057?language=javascript 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 2. 접근 방법 앞에서부터 n개씩 잘라서 같은 경우 숫자로 바꿔준다. 여기서 숫자로 바꾸다가 현재 최소 길이보다 크면은 break조건을 넣어줬따. 3. 코드 Javascript function solution(s) { var answer = s.length; if (s.length === 1) { return 1; } fo..