전체 글
-
[OS] Multi-processing, Multi-programming, Multi-threadingCS/OS 2023. 2. 26. 15:06
세가지 방식 모두 여러 Process나 Thread에 동시 실행을 제공하는 방식이다. 1. Multi-processing 여러 개의 processor(CPU)를 이용해서 여러 프로세스를 물리적으로 동시에 실행하는 방식을 의미한다. 진정한 병렬 실행 방식이다. 2. Multi-programming 프로세스가 I/O event wait를 위해 block되었을 때, CPU를 다른 프로세스에게 할당하여 CPU의 활용률을 높이는 방식이다. 즉, cpu가 I/O wait등 대기하는 상태가 됐을 때 다른 프로그램이 돌아갈 수 있도록 실행 권한을 넘겨주는 것. 시간적으로 여러 프로세스에게 번갈아 가며 CPU를 할당하는 방식으로 동시 실행을 제공하게 된다. 또한, I/O event wait가 아니더라도 일정시간(quan..
-
[OS] InterruptCS/OS 2023. 2. 26. 15:03
프로세서 활용도 개선을 위해 제공된다. 대부분의 I/O장치가 프로세서보다 느리다. 이 때 프로세서가 대기해야 하므로 일시 중지 하면 프로세서를 낭비하는 것이다. 그래서 인터럽트한다. 사용자 코드에는 인터럽트 코드가 없다. cpu와 os가 인터럽트를 처리한다. 인터럽트 발생 시 pc값을 인터럽트 핸들러 프로그램의 시작 주소로 설정, 커널모드로 전환 인터럽트 있는지 체크 -> 프로세스 상태를 stack에 저장 -> 인터럽트 핸들러로 인터럽트 실행 -> stack을 참고해 원래 pc값으로 돌아오기 - 인터럽트를 이용해 I/O에 의해 발생하는 wait 시간을 효율적으로 사용할 수 있게 되었다. - 매 명령어의 수행을 마치고 나면 대기중인 인터럽트가 있는지 확인 한 후 처리한다. - 인터럽트는 시스템, 운영체제,..
-
[OS] Process와 Thread의 차이, Time-sharing, Context SwitchingCS/OS 2023. 2. 26. 15:03
Process란 운영체제가 프로그램을 실행하고 관리하는 단위, 개체를 의미한다. (Processor는 Cpu로, 헷갈리지 말 것ㅋㅋ!!) Process는 프로그램 실행코드, 데이터 영역, 스택, process control block으로 구성되어 있다. 반면 Thread는 Process처럼 별도의 실행 개체로 관리되는 것이 아니라 Process 내부에서 동시 실행(concurrent)을 지원하는 방식이다. 해당 Process가 실행 중(Running)일 때 그 프로세스 내부의 Thread들을 스케줄링하는 방식으로 동시 실행을 제공한다. Thread도 ready, running, blocked 상태를 가진다. 그러나 Thread에 suspend는 없다. Thread가 포함된 Process가 종료되거나, s..
-
[OS] 운영체제의 역할CS/OS 2023. 2. 26. 14:54
-운영체제의 역할 1. 하나 이상의 하드웨어 리소스 활용 및 관리(프로세서, 메인 메모리 등) 2. 시스템 사용자에게 일련의 서비스 제공 3. 보조 메모리 및 I/O 장치 관리 운영체제란? 응용 프로그램 실행을 제어하는 프로그램. 애플리케이션과 하드웨어 간의 인터페이스. 컴퓨터 하드웨어 리소스를 관리하고 컴퓨터 프로그램을 위한 공통 서비스를 제공하는 소프트웨어의 모음이다. -운영체제가 제공하는 것 1. 프로그램 개발 환경 2. 프로그램 실행 3. I/O 디바이스 접근 (드라이버 접근) 4. 파일 접근 제어 5. 시스템 접근system access 6. 에러 감지 및 응답 7. 계정 관리 - 컴퓨터 시스템 내의 자원을 효율적으로 관리한다. - 프로그램 실행 시 오류 검사 및 복구를 지원한다. - 사용자나 ..
-
유클리드 호제법(최대공약수 재귀로 구하기)CS/Algorithm & Data Structure 2023. 2. 21. 02:52
두 자연수의 최대공약수를 구하는 대표적 알고리즘. 특징: 자연수 A,B에서 A%B=R일 때 A,B의 최대공약수 == B,R의 최대공약수 예를 들어 A: 192와 B: 162의 최대공약수를 구할 때(GCD(192,162)) Level A B 1 192 162 2 162 30 3 30 12 4 12 6 즉, 192와162의 최대공약수는 12와 6의 최대공약수(즉, 6)과 동일하다. 따라서 재귀함수를 통해 R이 0이 아닌 동안 두 수를 나누도록 구현할 수 있다. def gcd(a, b): if a%b==0: return b return gcd(b, a%b) print(gcd(192,162))
-
Python의 queueCS/Algorithm & Data Structure 2023. 2. 21. 02:30
파이썬에서 큐를 구현할 때 1. 리스트로 구현하기 2. deque라이브러리 이용 리스트로 구현하는건 시간복잡도가 더 높으니 deque을 이용하는 것이 좋다. 통상적으로 삽입은 append(), 삭제는 popleft()를 사용한다. 오른쪽으로 들어온 요소가 왼쪽으로 나간다고 생각하면 편할 것 같다. from collections import duque queue = deque() queue.append(5) queue.append(3) queue.popleft() => 3
-
[구현] 왕실의 나이트CS/Algorithm & Data Structure 2023. 2. 21. 01:58
나는 아래와 같이 풀었다. 1,1칸부터 8,8칸까지 돌며 조건에 맞는 칸만 체크를 했다. input_data = input() r = int(input_data[1]) c = ord(input_data[0])-ord('a')+1) cnt=0 for i in range(1,9): for j in range(1,9): if abs(r-i)==2 and abs(c-j)==1: cnt+=1 if abs(r-i)==1 and abs(c-j)==2: cnt+=1 print(cnt) 처음에 이동할 수 있는 방향이 몇 개 없으니 그것만 체크하면 되겠다 라고 생각했다 근데 직전에 푼 브루트포스 문제의 여파인지, 8 x 8 좌표는 작으니 그냥 다 체크하자고 생각해버렸던 거 같다. 정답으로 보여주신 코드인데, 처음 생각대로..
-
[Unity] fade out 퀄리티 개선[Unity] Projects & Study/Loop - Interactive Movie 2023. 2. 5. 10:44
지금껏 fade In/Out 효과를 쓸 일이 굉장히 많았는데, 이전 프로젝트까지는 늘 그저 time을 통해서 alpha값을 빼주는 코드로 구현했었다. 이번에는 문득 이 효과가 뚝뚝 끊기면서 밝아지거나 어두워지는, 조금은 부자연스럽다는 느낌이 들었다. 어떻게 하면 더 자연스럽게 구현할지 고민하다가, 예전에 Vector값을 옮길때 부드럽게 하기 위해서 Lerp함수를 썼던 것이 생각나서, Color도 Lerp함수가 제공되는지 찾아보니 예상대로 존재했다! Color.Lerp()를 이용하니 체감상 훨씬 자연스러운 Fade In/Out효과를 구현할 수 있었던 것 같다. 기존 코드 using System.Collections; using System.Collections.Generic; using UnityEngin..