전체 글 13

[운영체제] CPU 스케줄링 (1)

CPU-burst Time의 분포 여러 종류의 job(=process)이 섞여 있기 때문에 CPI 스케줄링이 필요 -interactive job에게 적절한 response 제공 요망 -CPU의 I/O 장치 등 시스템 자원을 골고루 효율적으로 사용 프로세스으의 특성 분류 프로세스는 그 특성에 따라 다음 두 가지로 나눔 📍I/O-bound process -CPU를 잡고 계산하는 시간보다 I/O에 많은 시간이 필요한 job -many short CPU bursts 📍CPU-bound process 계산 위주의 job -few very long CPU bursts CPU Scheduler & Dispatcher CPU Scheduler Ready 상태의 프로세스 중에서 이번에 CPU를 줄 프로세스를 고른다 D..

[운영체제] 프로세스 관리(2)

스케줄러 (Scheduler) 1. Long-term scheduler(장기 스케줄러 or job scheduler) 시작 프로세스 중 어떤 것들을 ready queue로 보낼지 결정 프로세스에 memory(및 각종 자원)을 주는 문제 degree of Multiprogramming을 제어 time sharing system에는 보통 장기 스케줄러가 없음 (무조건 ready) 2. Short-term scheduler(단기 스케줄러 or CPU scheduler) 어떤 프로세스를 다음번에 running시킬지 결정 프로세스에 CPU를 주는 문제 충분히 빨라야 함(millisecond 단위) 3. Medium-Term Scheduler(중기 스케줄러 or Swapper) 여유 공간 마련을 위해 프로세스를 통..

[운영체제] 프로세스 관리 (1)

프로그램의 실행(메모리 load) process의 virtual memory의 주소 공간과 커널의 주소 공간은 code, data, stack으로 이루어져 있음 커널 주소 공간의 내용 사용자 프로그램이 사용하는 함수 ✓함수(function) 1. 사용자 정의 함수 자신이 프로그램에서 정의한 함수 2. 라이브러리 함수 자신의 프로그램에서 정의하지 않고 갖다 쓴 함수 자신의 프로그램의 실행 파일에 포함되어 있다 3. 커널 함수 운영체제 프로그램의 함수 커널 함수의 호출=시스템 콜 Mode bit=1 -> 사용자 모드 Mode bit=0 -> 모니터 모드=커널 모드=시스템 모드 프로세스의 개념 "Process is a program in execution" 프로세스의 문맥(context) -CPU 수행 상태를..

[운영체제] 컴퓨터 시스템의 구조(2)

📍인터럽트(Interrupt) 인터럽트 당한 시점의 레지스터와 program counter를 save한 후 CPU의 제어를 인터럽트 처리 루틴에 넘긴다 Interrupt(하드웨어 인터럽트): 하드웨어가 발생시킨 인터럽트 Trap(소프트웨어 인터럽트) -Exception: 프로그램이 오류를 범한 경우 -System call: 프로그램이 커널 함수를 호출하는 경우 Ex. -프로그램이 실행되다가 디스크에서 파일을 읽어와야 한다면 I/O작업은 특권명령이기 때문에 프로그램은 운영체제에 system call을 함 운영체제는 disc controller에 파일을 읽으라고 요청 -> 이 작업은 오래 걸리므로 다른 프로그램에게 먼저 cpu 넘김. disc controller가 파일을 다 읽으면 cpu에 interrupt..

[운영체제] 컴퓨터 시스템의 구조(1)

운영체제의 분류 동시 작업 가능 여부 1. 단일 작업(single tasking) 한 번에 하나의 작업만 처리 ex. MS-DOS 프롬프트 상에서는 한 명령의 수행을 끝내기 전에 다른 명령을 수행시킬 수 없음 2. 다중 작업(multi tasking) 동시에 두 개 이상의 작업 처리 ex. UNIX, MS Windows 등에서는 한 명령의 수행이 끝나기 전에 다른 명령이나 프로그램을 수행할 수 있음 사용자 수 1. 단일 사용자(single user) ex. MS-DOS, MS Windows 2. 다중 사용자(multi user) ex.UNIX, NT server 처리 방식 1. 일괄 처리(batch processing) -작업 요청의 일정량 모아서 한꺼번에 처리 -작업이 완전 종료될 때까지 기다려야 함 ..

[백준] 폴리오미노 java - greedy

민식이는 다음과 같은 폴리오미노 2개를 무한개만큼 가지고 있다. AAAA와 BB 이제 '.'와 'X'로 이루어진 보드판이 주어졌을 때, 민식이는 겹침없이 'X'를 모두 폴리오미노로 덮으려고 한다. 이때, '.'는 폴리오미노로 덮으면 안 된다. 폴리오미노로 모두 덮은 보드판을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 보드판이 주어진다. 보드판의 크기는 최대 50이다. 출력 첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다. 예제 입력 1 복사 XXXXXX 예제 출력 1 복사 AAAABB 예제 입력 2 복사 XX.XX 예제 출력 2 복사 BB.BB 예제 입력 3 복사 XXXX....XXX.....XX 예제 출력 3 복사 -1 예제 입력 4 복사 X 예제 출력 4 ..

스터디/Algorithm 2024.04.17

[운영체제] 운영체제 개요

운영체제란? 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층 운영체제의 목적 1. 컴퓨터 시스템의 자원을 효율적으로 관리🌟 -CPU, 메모리, I/O 장치 등의 효율적 관리 효율성: 주어진 자원으로 최대한의 성능을 내도록 형평성: 특적 사용자/프로그램의 지나친 불이익이 발생하지 않도록 -사용자 및 운영체제 자신의 보호 2. 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공 -운영체제는 동시 사용자/프로그램들이 각자 독자적 컴퓨터에서 수행되는 것 같은 환상을 제공 -하드웨어를 다루는 복잡한 부분을 운영체제가 대행 어떤 프로그램에게 CPU 사용권을 줄까? CPU 스케줄링 한정된 메모리를 어떻게 쪼개어 쓰지? 메모리 관리 디스크에 들어온 요청을 어떤..

[프로그래머스] 완주하지 못한 선수 java (lv. 1)

문제 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. 입출력 예 ["leo", "kiki", "eden"] ["eden", "kiki"] "leo..

스터디/Algorithm 2024.04.11

[Spring] warning no mapping for get 해결하기

Spring MVC구조로 개발을 하던 중에 controller에서 매핑을 해주었는데에도 매핑이 안되는 에러가 발생했다. WARN : org.springframework.web.servlet.PageNotFound - No mapping for GET 일반적인 경우는 1)web.xml/servlet-context.xml과 같은 설정 파일에서 문제가 발생했거나 2)component-scan 태그에서 base-package를 잘못 설정했거나 3)controller 클래스에서 @Controller를 생략한 경우에 발생하는 에러이다. 하지만 나의 경우 설정을 다 잘 해주었음에도 불구하고 계속 url을 찾지 못하고 매핑에 실패했다.. 이로 인해서 몇 시간을 허비했지만 결국 해결하지 못하다가 다른 분의 글을 읽고 p..

[Spring] Spring 기초

정적컨텐츠: 파일을 그대로 전달 MVC와 템플릿 엔진: 서버에서 변형해서 html을 바꿔서 전달 API: JSON 포맷으로 클라이언트에게 전달 ex 서버끼리 통신 View ->화면과 관련된 일만 처리 controller-> 비즈니스로직, 서버와 관련된 일 처리 @ResponseBody -> http 통신 헤더, 바디 중 바디에 직접 넣어주겠다 ex return "hello " + name *객체를 반환하는 경우는 JsonConverter가 동작하여 json 형태로 변환 서비스-> 비즈니스 도메인 객체를 가지고 핵심 비즈니스 로직 구현 테스트를 할 때에는 의존하지 않게 데이터를 깔끔하게 지워주는 작업 필요 Test : given-when-then 기법 활용 스프링 빈을 등록하는 2가지 방법 -컴포넌트 스(..

스터디/Spring 2023.03.18