전체 글 396

CS : 스레드 / 멀티 스레딩 / 동시성 / 공유 자원 / race condition / critical section / CPU 스케쥴링 알고리즘

스레드?프로세스의 실행가능한 가장 작은 단위입니다. 프로세스는 여러 스레드를 가집니다.  코드 데이터 스택 힙을 각각 생성하는 프로세스와는 달리 스레드는 코드, 데이터, 힙은 스레드끼리 서로 공유합니다. 그 외 영역(스택, 스레드 상태)은 각각 생성됩니다 동시성?서로 독립적인 작업들을 작은 단위로 나누고 동시에 실행되는 것처럼 보여주는것 멀티 스레딩프로세스 내 작업을 여러개의 스레드로 처리는 기법이며, 스레드끼리는 서로 자원을 공유하기 때문에 효율성이 높습니다.  예로 웹 요청을 처리할때 새 프로세스를 생성하는 대신 스레드를 사용하는 웹 서버는 훨씬 적은 리소스를 소비하며, 한 스레드가 중단되어도(blocked) 다른 스레드는 실행 상태(running)일 수 있기 때문에 중단되지 않은 빠른 처리가 가능합..

CS : 쓰레드 / 프로세스 / 메모리 할당 / PCB / 컨텍스트 스위칭 / 멀티 프로세싱 / IPC

쓰레드 : 대기 상태란?ready는 CPU 스케쥴러로부터 CPU 소유권이 넘어오기를 기다리는 상태입니다.  이 떄 메모리 공간이 충분하면 메모리를 할당받고, 아니면 아닌 상태로 대기하고 있습니다. 쓰레드 : 대기 중단 상태란?ready suspended는 메모리 부족으로 일시 중단 0 : Process?컴퓨터에서 실행되고 있는 프로그램을 말하며, CPU 스케쥴링의 대상이 되는 task라는 용어와 거의 같은 의미입니다.  프로그램이 메모리에 올라가면 프로세스가 되는 인스턴스화가 일어납니다. 이후 O/S의 CPU 스케쥴러에 따라 CPU가 프로세스를 실행합니다. 0 : 스레드는?프로세스 내 작업 흐름을 지칭합니다/ 7 : 소스 코드와 프로그램, 프로세스의 관계, 실행 과정 (C언어 기준) 소스 코드 -> 전처..

CS : 메모리 / 할당 / 페이지 폴트 / 스레싱 등

메모리 관리 기법인 가상 메모리에 대해 알려줘 컴퓨터가 실제로 이용 가능한 메모리 자원을 추상화하여 이를 사용하는 사용자들에게 매우 큰 메모리로 보이게 만드는 것  가상 주소(logical address)와  실제 주소(physical address)가 매핑되어 있고,  프로세스의 주소 정보가 들어 있는 페이지 테이블로 관리됩니다.  이 때 속도 향상을 위해 TLB를 사용합니다.TLB는? 메모리와 CPU 사이에 있는 주소 변환을 위한 캐시입니다.  페이지 테이블에 있는 리스트를 보관하며  CPU가 페이지 테이블까지 가지 않도록 해 속도를 향상시킬 수 있는 캐시 계층입니다.가상 주소는 어떻게 실제 주소로 변환되나?MMU : 메모리 관리 장치에 의해 실제 주소로 변환되며, 이 덕분에 사용자는 실제 주소를 의..

CS : OS / 캐시 / 캐시매핑

OS의 큰 역할 4가지를 말해주세요 1. CPU 스케쥴링과 프로세스 관리 2. 메모리 관리 3. 디스크 파일 관리 4. I/O 디바이스 관리  CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리합닌다.  한정된 메모리를 어떤 프로세스에 얼마나 할당해야 하는지를 관리합니다.  디스크 파일의 보관 방법을 관리합니다.  I/O 디바이스들인 마우스, 키보드와 컴퓨터 간에 데이터를 주고받는것을 관리합니다. - O/S의 정확한 정의에 대해 말해주세요 O/S는 인터페이스이며, 사용자가 컴퓨터를 쉽게 다룰 수 있게 합니다.  한정된 메모리나 시스템 자원을 효율적으로 분배합니다.  운영체제와 유사하지만 소프트웨어를 추가로 설치할 수 없는 것을 펌웨어라고 합니다. - 컴퓨터는 어..

CS : DB / 트랜잭션 / 키

#separator:tab#html:false쓰레드 : 실행 상태란? running은 CPU 소유권과 메모리를 할당받고  인스트럭션 수행중임을 의미 CPU burst가 일어났다고도 표현쓰레드 : 종료 상태란? 메모리와 CPU 소유권을 모두 놓고 가는 상태 자연스러운 종료 + 부모가 자식 프로세스를 강제시키는(abort) 비자발적 종료 자식 프로세스에 할당된 자원의 한계치를 넘어서거나 부모 프로세스가 종료 or 사용자가 process.kill 등 여러 명령어로 프로세스를 종료할때 발생 프로세스의 메모리 구조 4가지를 말하라 동적 : 힙 / 스택 정적 : 데이터  / 코드 프로세스의 키워드 : cpu 소유권 + 메모리 트랜잭션이란? DB에서 하나의 논리적 기능을 수행하기 위한 작업의 단위를 말하며 DB에 q..

Restful 코스

1. 개설동일하게 Spring initializr 사용 - 2. 엔드포인트 작성엔드포인트메서드목적/courses/GET모든 과정 반환/courses/{id}GETid에 해당하는 과정 반환/courses/category/{name}GET특정 카테고리에 해당하는 과정 반환/courses/POST새 과정 생성/courses/{id}PUT특정 ID에 해당하는 과정 수정/courses/{id}DELETE특정 ID에 해당하는 과정 삭제/courses/DELETE모든 과정 삭제 - 3. 엔티티 설계  @ : Data -> 롬복@Entity / @Table -> jpa 잊지말기 Restful에서는 Entity 카테고리 아닌 model 카테고리로 둔다 - 4. 리포지토리JpaRepository 아닌 CrudReposit..

카테고리 없음 2024.04.26

코딩테스트 입문 : 공 던지기

사고 흐름 꺼내기 - 떠오르는것 한줄로 즉시 꺼내기 - 더듬기 2개밖에 할 수 없음 조건에 따라 segment locked : 질문하고 경계를 특정한다 - 짝수일때 홀수일때 순회해서 완성되는 것 한칸 너머서 건너는거니까 총 개수 1 -> 자기를 건너뛰고 무조건 자기한테 - 2 -> 상대를 건너뛰고 무조건 자기한테 3 -> 건너뛰고 역순(모두 순회) 4 -> 건너뛰고 순회되는 요소들만 순회한다. 5 -> 첫 사이클과 다음 사이클에 순회 요소들이 달라진다. - k에 따라 나눠지는것 최소공배수 - 짝수면 홀수인덱스만 순회하면 되고 + 실제 순회 인덱스 크기가 반으로 줄어든다 홀수면 어느 인덱스 순회차례인지 == 두개 붙여서 -> 인덱스 크기가 그대로 새 인덱스를 만들까? -> k를 이 개선된 인덱스로 나누게 ..

카테고리 없음 2024.04.20

코딩테스트 입문 : 7의 개수

설계 순회 : 원본 배열 + CV라인 잡기(TP) 환전 : int 그대로 판별, 넘어가면 ->String->Char로 단일 슬롯을 순회하지만, 내부에 7이 여러개 담길 수 있다 10 미만일때 -> 정수비교 7만 맞는지 10 이상일때 -> char로 쪼개서 다시 순회 ㅠㅠ 컨티뉴 class Solution { public int solution(int[] array) { // Field int counter = 0; // Tour for (int T : array) { if (T < 10) { if (T == 7) { counter++; continue; } } for (char t : String.valueOf(T).toCharArray()) { if (t == '7') counter++; } } ret..

카테고리 없음 2024.04.20

코딩테스트 입문 : 가까운 수

설계 : array 전부 순회하면서 min 선형 비교 or 이진 탐색 or n보다 커지는 array[i]를 잡아 idx plate로 담아낸다 idx와 idx-1를 비교 n이 array의 원소보다 크거나 작을때 -> 경계에서 벗어나는 것 먼저 예외 처리 간단하게 If로 해준다 import java.util.Arrays; class Solution { public int solution(int[] array, int n) { int L = array.length; Arrays.sort(array); if (n >= array[L-1]) return array[L-1]; if (n n) { idx = i; break; } } int a = n-array[idx-1]; int b = array[idx]-n; i..

카테고리 없음 2024.04.19