분류 전체보기
-
[BOJ] 1253번 좋다Algorithm/BOJ 2022. 6. 8. 19:56
[BOJ] 1253번 https://www.acmicpc.net/problem/1253 알고리즘 문제 접근 : 이분 탐색 각 숫자에 대해서 이분 탐색 처리 맨 앞과 맨 뒤부터 하나씩 단계별로 줄여가면서 checking 다만, 중복 숫자에 대해서는 한번에 처리 코드 #BOJ 1253번 import bisect n=int(input()) datas = list(map(int,input().split())) datas.sort() answer = 0 i = 0 while i < n : left , right , target = 0 , n-1 , datas[i] temp = 1 while left < right : #예외 마이너스인경우 # 5 / -4 -3 -2 -1 0 if left == i : left +=..
-
[BOJ] 11000번 강의실 배정Algorithm/BOJ 2022. 6. 8. 18:32
[BOJ] 11000번 - 강의실 배정 문제 : https://www.acmicpc.net/problem/11000 11000번: 강의실 배정 첫 번째 줄에 N이 주어진다. (1 ≤ N ≤ 200,000) 이후 N개의 줄에 Si, Ti가 주어진다. (0 ≤ Si < Ti ≤ 109) www.acmicpc.net 알고리즘 그리디를 이용한 알고리즘으로 생각하여 풀었습니다. 가정) 현재까지의 강의실 시간 중에 가장 빨리 끝나는 시간보다 늦게 끝난다면, 현재 강의실에 이어서 하면 된다. 아니라면 강의실 추가 1. 강의실 시간을 시작 시간 , 끝나는 시간으로 재정렬 2. 순차적으로 강의실 시간을 보면서 현재까지의 가장 빨리 끝나는 시간과 비교 3-1. 만약 빨리 끝나는 시간보다 시작한 시간이 더 작다면, 강의실이..
-
xv6 Test codeCS/OS 2022. 6. 2. 17:12
Github = https://github.com/Kimuksung/Xv6 를 참고하시면 됩니다. Test Code를 돌리기 전에 Kaist Os Lab을 참고하여 작성하였습니다. 해당 OS lab pdf를 먼저 참고오시면 매우 도움이 됩니다. 1. Execute a Program in Xv6 제가 임의로 만든 test.c 와 practice1.c 를 돌려볼 예정입니다. xv6 제공하는 header file이 정해져 있기 때문에 아래와 같은 상황을 주의해야합니다. 따라서 stdio.h 사용할 수 없습니다. 대신에 아래 header file로 생성해야 합니다. 상황에 맞게 가져다가 사용하면 됩니다. “types.h” : header file for variable types “user.h” : header..
-
Linux Github Clone -> Push개발/Git 2022. 6. 2. 16:47
VM 환경에서 Linux를 사용 후에 Xv6 관련 내용을 Github에 넣는 방법을 알아보겠습니다. 1. Xv6 공식 코드를 컴퓨터로 가져오기 git clone git://github.com/mit-pdos/xv6-public.git 2. 연결된 github 주소 확인 git remote -v //결과 origin https://github.com/mit-pdos/xv6-public.git (fetch) origin https://github.com/mit-pdos/xv6-public.git (push) 3. 자신의 github 주소로 변경 #remote url 삭제 git remote remove origin #자신의 URL 추가 #아래는 예시입니다. git remote add origin https:..
-
xv6 (linux Init)CS/OS 2022. 6. 2. 14:22
linux 설치 Orcale VM Virtual Machine -> OS( LTS 18.04 build-essential 시에 20.04는 충돌이 난다) setting sudo apt-get install git wget qemu sudo apt install build-essential git clone https://github.com/mit-pdos/xv6-public.git sudo apt-get install gdb ( if you don't have it.. ) cd xv6-public make qemu-nox CPUS=1 #qemu exit Ctrl+A -> X Run #init.c // init: The initial user-level program #include "types.h" #i..
-
7.Posix thread(Pthread)CS/OS 2022. 5. 25. 20:42
들어가기 전에 Process에 대해서 살펴보고 시작한다. Process / Thread 일반적으로 Unix Process 는 Main() Function으로 부터 실행되는 Single Thread이다. 앞서 말하였듯이 Fork()를 통해 Process가 생성됨으로 Memory 및 File Descriptor를 Copy-on-Write 방식으로 자식에게 복사하여준다. 반면, Thread는 전역 Memory들은 서로 공유하고 있기 때문에 Process보다 속도가 빠르다. Thread = Semi Process = Light weight Process 라고 불린다. Posix Thread 일반적으로 PThread로 불리며, Thread를 지원하기 위한 C 표준 라이브러리 셋을 사용하여 동작시켜야 한다. #Pt..
-
5. Process_SchedulingCS/OS 2022. 5. 19. 17:31
CPU(Processor) 는 하나의 Prcoess 작업이 수행되면, 다음 Process를 작업하여 수행한다. 이 때 다음 Process가 어떤것이 와야 효율적이고 사용자의 입장에서 빠르다고 느낄 수 있을까? 라는 관점에서 나온것이 Process Scheduling 이다. 여러 방법이 있음으로, 상황에 맞게 사용해야 한다. 1. Preemptive vs Non-Preemptive 1-1) Preemptive 다른 Process가 CPU를 점유하고 있을 경우에 I/O , Interrupt , Process exit 이 되지 않음에도 불구하고 다른 Process가 점유한 자리를 뺏을 수 있는 경우이다. 즉, 프로세스가 정상적으로 수행중인 가운데 다른 프로세스가 CPU를 강제로 점유하여 실행할 수 있는 것이다..