목록분류 전체보기 (40)
개발계발
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bnjtxd/btsGksaTp3E/cUq5qvZmZROkip8a5XcDAK/img.png)
프로세스 메모리에 적재되어 실행 중인 프로그램('프로그램'은 보조기억장치에 있는 데이터 덩어리임) 포그라운드 프로세스 vs 백그라운드 프로세스 포그라운드 프로세스 메모장, 웹 브라우저, 워드 등 사용자 화면에 나타내는 실행되는 프로세스 백그라운드 프로세스 사용자 화면에 보이지 않는 뒤편에서 실행되는 프로세스(유닉스 체게에서는 데몬이라고 부르고, 윈도우에서는 서비스라고 브룸) 모든 프로세스는 CPU를 필요로 하지만, CPU 자원은 한정돼있기 때문에 프로세스는 정해진 시간만큼 CPU를 이용하고, 타이머 인터럽트발생하면 다른 프로세스에게 CPU를 양보한다. -> 이를 위해 운영체제는 프로세스 제어블록(PCB)를 이용한다. 프로세스 제어블록(PCB) 프로세스와 관련된 정보를 저장하는 자료 구조(상품(프로세스)에..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bAe4dH/btsGabN6rw1/Rvyp1LnldeCofHpttdjMY1/img.png)
스택 연속된 메모리에서 후입선출(LIFO)방식의 자료구조로 데이터를 넣는 작업을 푸시, 꺼내는 작업을 팝이라고 한다. 위에서 연속된 메모리라고 했는데, 스택 자료구조의 가장 기본적인 구현체인 리스트를 이용해 코드를 확인해보자. 아래 코드를 실행해보면, stk = [] stk.append(0) stk.append(1) stk.append(2) stk.append(3) stk.append(4) print(id(stk)) print(id(stk[0])) print(id(stk[1])) print(id(stk[2])) print(id(stk[3])) print(id(stk[4]))아래와 같은 결과가 나오는데, 4309557504 4308494608 4308494640 4308494672 4308494704 43..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b2D6WH/btsF55VnCiH/IzhNpuMktAePmsqsf9mLpk/img.png)
운영체제 사용자를 위한 프로그램이 아닌 사용자가 실행하는 프로그램을 위한 프로그램이다. 즉, 사용자가 실행하는 응용 프로그램이 올바르게 실행되도록 돕고 자원을 할당해 주는 프로그램 이를 제대로 이해하기 위해서는 커널과 시스템 호출(System Call) 의 이해가 필요하다. 커널영역 메모리는 크게 커널영역과 사용자영역으로 나뉜다. 운영체제도 결국 프로그램 중 하나인데, 운영체제는 컴퓨터 부팅 시 메모리의 커널영역에 적재되어 하드웨어를 직접 조작할 수 있게 된다.(사용자 영역의 프로그램은 기본적으로 하드웨어 제어 불가) 그럼 사용자 프로그램이 하드디스크에 데이터를 저장하는 등의 하드웨어 제어를 하려면 어떻게 해야함??? -> 이 때, 시스템 콜이라는 개념이 나온다. 위 사진과 같이, 사용자영역에서 실행되던..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cACtVa/btsF7xJ3Goc/c2RTksby9aTVAMl9sa1hr1/img.png)
선형 검색 가장 기본적인 알고리즘으로 직선으로 늘어선 배열에서 원하는 키 값을 가진 원소를 찾을 때까지 맨 앞부터 순서대로 검색하는 알고리즘이다. 배열의 첫 원소부터 순차적으로 검사하기 때문에 시간 복잡도는 O(n)이다. 선형 검색 알고리즘을 코드로 구현하면 아래와 같다. from typing import Any, Sequence def seq_search(a: Sequence, key: Any) -> int: i = 0 while True: if i == len(a): return 0 if a[i] == key: return 1 i += 1 하지만 위 코드에서 while문을 한 번 반복할 떄마다 2가지 종료조건(if문)을 체크하게된다. 이 비용을 줄이기 위한 방법으로 보초법을 사용할 수 있다. 보초법 ..