일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 운영체제
- 큐
- stack
- 코딩 테스트
- SW Expert Academy
- DFS
- Python
- queue
- 백준 #
- 프로세스
- BFS
- 백준
- java
- 디바이스 입출력
- springboot
- 객체지향 프로그래밍
- 데드락
- error
- OOP
- 파이썬
- 스택
- 다익스트라
- integretion test
- unionfind
- 자료구조
- 유니크 키
- 캡슐화
- OS
- DP
- 논리 메모리
- Today
- Total
목록Develop (37)
middlefitting
백준 11060 점프 점프 문제입니다. 배열의 첫번째 위치에서 마지막 위치로 이동하는 문제입니다. 이동은 현재 위치의 값만큼 이동할 수 있습니다. 저는 DP와 dfs를 통해 문제를 해결하였습니다. 1. 이동하려는 위치에 방문한 적이 없다면 - 무조건 방문을 수행합니다. 2. 이동한 위치를 방문했다면 - 해당 dp 값보다 현재 값이 작아 갱신할 수 있다면 방문을 수행합니다. 최종 출력은 배열의 마지막 요소에 방문하기 위한 경로가 존재한다면 그 값을, 없다면 -1을 출력합니다. N = int(input()) dp = [0] * N arr = list(map(int, input().split())) find = [False] def dfs(temp, depth): if temp == (N - 1): find[..
프로세스 생성 프로세는 부모 프로세스로부터 생성되게 됩니다. 프로 프로세스가 fork 시스템 콜을 호출하면 해당 부모 상태를 복제한 자식 프로세스가 생겨나게 됩니다. 자식 프로세스는 부모 프로세스의 주소 공간을 복사하고, PCB와 같은 자원들도 복제하게 됩니다. 자식 프로세스는 exec 시스템 콜을 통해 새로운 프로그램을 메모리에 올릴 수 있습니다. 따라서 프로세스의 생성 단계는 다음과 같이 이루어집니다. fork() -> 부모 프로세스의 복제 -> exec() -> 새로운 프로그램 덮어쓰기 COW 파일 시스템으로 많이 나오는 개념으로, 자식 프로세스가 부모 프로세스와 자원을 공유하다가. write가 발생하면 내용이 바뀌므로 그때 메모리 공간을 복사한다는 개념입니다. copy 또한 필요한 부분만 올라가게..
프로세스의 개념 프로세스는 실행중인 프로그램을 말합니다. 프로세스가 어떤 의미로 사용되었는지 알기 위해서는 문맥을 알아야 하는데, 문맥을 기준으로 프로세스가 어떻게 진행했는지, 시점이 어떤지 알 수 있기 때문입니다. 프로세스의 문맥은 다음과 같이 존재합니다. CPU 수행 상태를 나타내는 하드웨어 문맥 Program Counte, Register 프로세스의 주소 공간 Code, data, stack 프로세스 관련 커널 자료 구조 PCB, Kernel stack 프로세스의 상태 프로세스는 상태가 변경되며 수행됩니다. 상태가 변경되는 가장 큰 요인은 한 프로세스가 CPU를 계속 점유하지 않고 서로 돌아가면서 쓰기 때문이며, 상태의 종류는 다음과 같습니다. New 프로세스가 생성중인 상태를 말합니다. Ready..
Context Swtich 란? Context Switch (문맥 교환) 은 운영체제에서 아주 중요한 개념입니다. 문맥교환이란 CPU가 사용자 프로그램에서 다른 사용자 프로그램으로 넘어가는 것을 말합니다. 현대적인 운영체제에서 CPU는 사용자 프로그램이 번갈아가면서 사용하는 자원이기 때문에 문맥 교환은 당연히 일어날 것입니다. CPU는 굉장히 빠른 자원이기 때문에 여러 사용자 프로그램이 번갈아가면서 사용합니다. Timer 만료, I/O, 시스템 콜 등 다양한 Interrupt가 걸리게 되면 CPU는 운영체제로 넘어가게 되고, 운영체제는 가장 CPU 우선권이 있는 사용자 프로그램에게 CPU를 넘겨주게 됩니다. Context Switch 에 필요한 작업 문맥 교환을 위해서는 교환 이전 시점을 알아야 합니다...
입출력(I/O)이란 CPU 를 점유한 운영체제가 디바이스 컨트롤러에게 I/O 요청을 보내는 것을 말합니다. 입출력는 동기 방식과 비동기 방식이 존재합니다. 동기와 비동기 동기와 비동기는 싱크를 맞추는 것의 따라 구분됩니다. 싱크를 맞춘다는 것은 시간적으로 맞추는 것을 뜻하며, 동기는 싱크를 맞추는 경우, 비동기는 싱크를 맞추지 않는 경우인 것입니다. 동기식 입출력 시스템 콜을 통해 I/O 를 요청한 사용자 프로그램이 I/O 작업이 끝난 이후에 다른 일을 할 수 있는 경우를 말합니다. I/O 요청의 결과를 통해 일련의 과정을 수행할 수 있는 경우가 해당될 것입니다. 현대적인 방식은 CPU 낭비를 방지하기 위해 시스템 콜을 통해 I/O 를 요청한 사용자 프로그램은 운영체제에 CPU 를 넘겨주게 되고, 운영체..
I/O 디바이스란 I/O 디바이스는 입출력을 수행할 수 있는 하드웨어 장치를 말합니다. I/O 디바이스 종류의 예시는 다음과 같습니다. Input : 키보드 Output: 모니터 Input / Output: 하드디스크 I/O 의 작업과정 입출력은 디바이스 컨트롤러를 통해 명령을 수행 디바이스 컨트롤러란 I/O 디바이스를 전담하는 CPU 같은 것이고, 디바이스 내부를 통제합니다. CPU는 직접 I/O 디바이스를 통제하지 않고 디바이스 컨트롤러에 위임을 하여 작업을 수행합니다. 그런 구조로 진행이 되는 이유는 컴퓨터에서 가장 빠른 CPU의 낭비가 이루어지면 안되기 때문입니다. 작업속도는 CPU >>>>> Lam >>>>> I/O 입니다. 따라서 CPU가 자기보다 상대적으로 느린 I/O 작업을 담당하고 기다리..
운영체제란 좁은 의미로는 커널을 의미합니다. 넓은 의미로는 커널을 포함한 여러 주변 시스템 유틸리티를 포함한 개념입니다. 운영체제의 목적 하드웨어, 자원을 효율적으로 관리합니다. 사용자가 컴퓨터를 편리하게 사용할 수 있는 환경을 제공합니다 운영체제의 분류 동시 작업 가능 여부 단일 작업 싱글 테스킹 방식, 한번의 하나의 작업만 수행할 수 있습니다. 예시로는 MS-DOS 등이 존재합니다. 다중 작업 현대적인 운영체제를 말합니다. 멀티 테스킹 방식, 한 명령의 수행이 끝나기 전에 다른 명령이나 프로그램을 수행할 수 있습니다. 사용자의 수 단일 사용자 사용자 개인 PC를 말합니다 다중 사용자 다중 사용자가 존재하는 웹 사이트와 같은 서버의 운영체제를 말합니다. 예시로는 UNIX, NT Server 등이 존재합..