[OS] 프로세스 | 프로세스의 상태 | PCB | context switching
·
CS/OS
프로세스 프로세스는 실행 중인 프로그램이다. Process context(프로세스의 문맥) 특정 시점에서의 cpu 수행 상태를 나타내는 하드웨어 문맥 PC가 어디를 가리키고 있는가? 각종 레지스터 프로세스의 주소 공간(code, data, stack) 프로세스 A의 주소공간에 어떤 내용이 담겨있는가? (stack에 쌓인 함수, bss에 있는 변수의 값) 프로세스 관련 커널 자료구조 PCB(Process Control Block): 프로세스 하나가 실행될 때 마다 이를 관리하기 위해 생성. cpu를 얼마나 줘야할지 등 Kernel Stack Process State(프로세스의 상태) 프로세스는 상태가 변경되며 수행된다. New 프로세스가 생성 중인 상태 Running cpu를 잡고 instruction을 ..
[OS] 컴퓨터 시스템 구조 | 저장장치 계층 | 프로그램 실행 과정 | 커널 | 동기식/비동기식 IO | DMA
·
CS/OS
컴퓨터 시스템 구조 cpu에는 instruction set에 따라서 N bytes로 구성된 기계어 조합이 구성되어있다. 그래서 매 순간 CPU는 메모리에 어느 주소에 담긴 명령어들을 불러와서 일을 수행하게됨. cpu에는 메모리 주소를 가르키는 pc 레지스터에서 가리키는 메모리 위치에 가서 명령어를 불러온다. 불러오자마자 pc + N byte cpu는 다음 순서의 명령어를 실행하기 전에 interrupt를 체크한다. ⭐️만약 인터럽트가 들어왔다면 하던 작업을 멈추고 CPU 제어권을 OS에게 주게 됨. ⭐️OS는 인터럽트 상황에 맞게 처리해야 할 커널 함수를 수행한다. 항상 순차적 x. 함수 호출이나 제어 구조가 오면 JMP하게됨. mode bit = 0 or 1 0 : 모든 기계어 집합 실행 가능/운영체제..
[백준/2003] 수들의 합| 부분합과 누적합의 차이를 명확하게 | 투포인터
·
PS/BOJ&Programmers
https://www.acmicpc.net/problem/2003 2003번: 수들의 합 2 첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. www.acmicpc.net 알고리즘 누적합: psum[i] = psum[i-1] + li[i]로 피보나치처럼 누적해서 더함. 끝으로 갈수록 앞의 값들이 누적되어 값이 커짐 부분합: psum은 앞에서부터 차차 누적해서 더한다면 부분합은 i와 j까지의 합이다. psum[j]-psum[i-1]을 통해 구할 수도 있지만 이렇게 되면 이중 포문을 사용해야 하기 때문에 복잡도가 커진다. 따라서..
[백준/1913] 회의실 배정 | 그리디 | 우선순위 lambda 활용
·
PS/BOJ&Programmers
https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 오늘 문제해결기법 강의 시간에 그리디 알고리즘을 배웠다. 교수님께서 가르쳐주신 내용을 정리해보고자 한다. 그리디 알고리즘을 예전부터 알고있었는데 활용을 잘 하지 못했다! 이번 기회에 확실히 잡아두자. 알고리즘 그리디 알고리즘: Greedy(욕심쟁이) [기본 마인드] 어떤 기준을 정하고 가장 최선의 선택을 먼저 시작한다. ✅ 그리디 문제를 풀 때는 기준을 세우는 게 중요하겠다. 어떤 문제를 푸는데 도저히 생각이 안 날 때 일단 이거부터 써보자. ➡️ 아이디어 생각은 어렵지 않으나 구현이 어려울 수 있다. ⭐️ 내 ..
[AWS] Serverless에 대해서 & AWS LAMBDA
·
DevOps/AWS
Serverlessserverless 웹 사이트는 서버가 없는 게 아니다. 웹 동작 방식의 기본이 client server의 handshake이므로 서버가 없다는 건 말이 안된다. 서버리스라는 건, 백엔드 개발자가 서버에 트래픽이 얼마나 잡히는지 모니터링하거나 서버의 개수, 사양 등등을 일일이 고려할 필요없이 aws와 같은 클라우드 서비스에서 제공하는 서버(서비스)를 이용하는 것이다. 이를 이용하면 백엔드 개발자는서버 프로비저닝/관리 없이 코드를 실행할 수 있다.클라이언트(웹 서비스 이용자)의 사용량에 따라서 지속적으로 서버의 규모를 조정할 수 있다.높은 가용성과 자동으로 복구되는 편리함이 있다. 클라우드를 이용하여 REST API를 만들고 운영하는 방법 3가지1. laaS(EC2, VM Instanc..
[Docker] 도커란, 가상화(Virtualizaion)와 컨테이너
·
DevOps/Docker
가상화(Virtualization)와 컨테이너가상화란 컴퓨터 자원을 가상 환경으로 분리하여 프로그램들이 상호 충돌없이 실행 가능하도록 하는 아키텍처 기술이다.  가상화의 종류OS 수준 가상화 - (docker)하나의 OS 커널을 여러 개의 공간으로 격리하여 각각의 컨테이너가 마치 독립된 것처럼 사용하는 가상화이다. 따라서 OS를 새로 설치하지 않고 host OS의 커널을 공유한다. 이러한 방식으로 실행 속도가 빠르고 성능 상의 손실이 적다. 사용자에게는 가상머신처럼 보인다.개발 환경 가상화anaconda, venv 등 특정 폴더를 가상환경으로 만들어서 라이브러리나 소스코드를 관리하는 방식이다.머신 가상화다수의 OS를 동시에 실행하는 플랫폼을 말한다. 하이퍼바이저에 OS를 설치하여 운영하는 구조이며, 여러..
[백준/1912] 연속합 | 누적합, 부분합
·
PS/BOJ&Programmers
https://www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 구간합 알고리즘 크기가 N인 배열에 부분합을 구하는 연산을 M번 수행해야 한다고 하자. li[l] + li[l+1] + li[l+2] + ・・・ + li[r]는 다음과 같은 코드를 통해 구할 수 있다. ans = 0 for i in range(l,r): ans += li[i] l, r의 범위가 최악의 경우 0 ~ N-1이므로, 연산의 시간 복잡도는 O(N)이다. 이 연산을 M번 수행해야 하므로 최종적인 시간..
[Backend] RESTful API란, API와 Interface
·
Dev/Backend
REST/Restful API란?REST 아키텍처 스타일의 디자인 원칙을 준수하는 API다.  REST 디자인 원칙균일한 인터페이스클라이언트-서버Stateless캐싱 가능성코드 온디맨드HTTP URI를 통해 자원(resource)을 명시해당 자원에 대해 HTTP 메소드를 활용해서 CRUD 기능을 수행HOW TO UNDERSTANDAPIRESTREST/RESTful API 에 대한 이해가 기반되어야 한다. Interface(상호의 얼굴 😃)(사전상) 컴퓨터 프로그램이 user와 주고받는 정보를 나타내는 방법메뉴/스크린의 레이아웃GUI(Graphical User Interface): 사용자가 편리하게 사용할 수 있도록 컴퓨터의 어떠한 기능을 아이콘 따위로 나타낸 것(결론) 어떤 두 시스템, 장치, 소프트웨..
[백준/1912] 연속합 | 누적합 | max의 활용
·
PS/BOJ&Programmers
https://www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net [알고리즘] 처음에 이 문제를 보고 이중 for문의 인덱스를 i를 기준으로 띄워가면서 누적합을 통해 결과를 도출하려고 했다. n=int(input()) li = list(map(int, input().split())) total = 0 ans=[] for i in range(n): total = 0 for j in range(i,n): total+=li[j] ans.append(total) print(max..
[백준/1312] 소수 | 런타임에러? | 부동소수점과 컴퓨터 연산에 대한 이해
·
PS/BOJ&Programmers
https://www.acmicpc.net/problem/1312 1312번: 소수 피제수(분자) A와 제수(분모) B가 있다. 두 수를 나누었을 때, 소숫점 아래 N번째 자리수를 구하려고 한다. 예를 들어, A=3, B=4, N=1이라면, A÷B=0.75 이므로 출력 값은 7이 된다. www.acmicpc.net 투 포인터 헷갈려서 쉬운 문제 찾다가 된통 당한! 문제.. 단순하게 str로 바꿔서 풀면 런타임 에러가 난다. 백준 문제에서 오타 등의 문제가 아닌 알고리즘으로인해 런타임 에러가 난 경우는 처음이다. 그만큼 배울 점이 많아서 기록해본다. 이 문제는 컴퓨터의 부동소수점 연산에 대한 이해가 기반되어야 한다. 사실 문제에서 대놓고 힌트를 제공하고 있다. 첫 번째 줄에 A와 B(1 ≤ A, B ≤ 1..
[백준/15686] 치킨 배달 | 시뮬레이션 | 2차원 공간 좌표 다루기
·
PS/BOJ&Programmers
이번주 주제는 시뮬레이션. 부끄럽지만 시뮬레이션은 처음 공부해본다~^^ 별 것 아님. https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net [주요 유형] 1. 2차원 공간(상,하,좌,우) ✅ 방향 벡터를 잘 쓰자. 2. 특정 게임 구현 ✅ 머릿속으로 상상하면서 테스트 케이스를 떠올리자. [Skills] 1. 문제를 잘 읽고 조건을 빼먹지 않게 메모하자 2. 자료구조를 잘 활용하자. 주절..주절...주절.... 사실 이 문제를 포..
[백준/13699] 점화식 | 동적계획법 dp 개념(피보나치)| 이중포문의 활용 |
·
PS/BOJ&Programmers
https://www.acmicpc.net/problem/13699 13699번: 점화식 다음의 점화식에 의해 정의된 수열 t(n)을 생각하자: t(0)=1 t(n)=t(0)*t(n-1)+t(1)*t(n-2)+...+t(n-1)*t(0) 이 정의에 따르면, t(1)=t(0)*t(0)=1 t(2)=t(0)*t(1)+t(1)*t(0)=2 t(3)=t(0)*t(2)+t(1)*t(1)+t(2)*t(0)=5 ... 주어진 입력 0 ≤ n www.acmicpc.net [동적 계획법] dp는 이전 문제들의 답을 메모해두는 알고리즘이다. 피보나치 수열과 같이 이전에 계산한 문제의 해가 계속 필요할 때 유용하다. 그래서 동적 계획법의 핵심은 "Memoization"이다. 메모리제이션은 이전에 계산한 값들을 저장해두고, ..
sebinChu
Studying IT with cobinding