목록전체 글 (89)
HS_development_log
쓰레드 쓰레드(Thread) CPU 이용의 기본 단위 프로세스 내에서 실행되는 기본 단위 LWP(Light Weight Process) 프로세스와 쓰레드 프로세스가 여러 쓰레드를 가진다면 동시에 하나 이상의 작업들을 수행할 수 있음 같은 프로세스에 속한 쓰레드들은 프로세스의 코드, 데이터, 열린 파일 등을 공유함 각 쓰레드는 각자 레지스터 집합(PC 레지스터 포함), 스택을 가짐 싱글 쓰레드 vs 멀티 쓰레드 싱글 쓰레드 : 프로세스 내의 쓰레드가 1개인 경우 멀티 쓰레드 : 프로세스 내의 쓰레드가 2개 이상인 경우 멀티쓰레드의 장점 빠른 응답성 프로그램의 한 부분을 수행하다가 중단되어도 다른 부분이 계속 수행할 수 있어 사용자에게 응답성을 좋게 할 수 있다 자원 공유 쓰레드는 프로세스 내의 code, ..
프로세스 프로세스(Process) 실행중인 프로그램 운영체제가 디스크에 있던 프로그램 파일을 찾아서 메모리에 적재해서 만든 것 운영체제로 부터 시스템 자원을 할당받는다. 프로세스의 구성 요소 코드(code) 데이터(data) : 전역 변수들을 저장 스택(stack) : 지역 변수 및 함수의 매개변수를 저장 힙(heap) : 동적 메모리 할당 영역 CPU 레지스터 PC(program counter) 레지스터 : 프로그램의 다음에 실행할 명령어의 주소 값을 가짐 CS 레지스터 : 코드 세그먼트의 시작 주소 포함 DS 레지스터 : 데이터 세그먼트의 시작 주소 포함. 데이터의 위치를 알아내는데 사용 SS 레지스터 : 스택 세그먼트의 시작 주소 포함 프로세스 제어 블록(PCB) 프로그램을 실행하여 프로세스가 만들..
1. 문제 2018 KAKAO BLIND 캐시 2. 접근 LRU 캐시 교체 알고리즘을 구현하면 된다. 간단하게 if else문으로 구분해 주면 되는데 cache hit 라면 1만큼 시간을 더해주고, cache miss면 5만큼 시간을 더해준 뒤 사후 처리를 해주면 되는데 만약 cache 공간이 남아 있다면 그냥 추가를 해주면 되고, cache에 남은 공간이 없다면 가장 사용한 지 오래된 데이터를 바꿔주면 된다. 나는 데이터와 데이터가 들어온 순서를 같이 관리하기 위해 HashMap을 사용했다. 3. 코드 import java.util.*; public class Main { public static void main(String[] args) { int cacheSize = 3; String[] citi..
1. 문제 2019 KAKAO BLIND 블록 게임 2. 접근 기본적으로 배열을 완전 탐색하는 문제라고 생각했다. 2.1 첫 번째 시도 처음에는 모든 세로줄을 한개씩 검사해서 한 개의 행씩 1x1 블록을 놓은 뒤, 블록이 지워지는지 확인해보려고 했다. 1x1 블록을 -1로 두고 나머지 블록과 검사를 진행했는데 이게 자꾸 예외도 많이 나고 1x1블록끼리 사라지고 난리가 나서 포기했다.. 물론 이 방법으로도 문제가 풀린다. 내 구현력이 떨어지는 듯... 2.2 두 번째 시도 어차피 1x1 블록은 위에서 떨어지므로 애초에 지워질 수 있는 블록의 모양은 정해져 있다. 위에서 블록을 떨어뜨렸을 때 직사각형을 만들 수 있는 블록만 삭제할 수 있다. 그런 블록은 빨강 3번, 빨강 4번, 주황 2번, 주황 3번, 파랑..