일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 서드파티 쿠키
- slash 24
- 광고 기술
- 운영체제
- 세마포어
- 단축키
- 소프트웨어
- 메모리
- github
- spring
- 이펙티브 자바
- 개발
- Public
- 프로그래밍
- 컴퓨터과학
- 스터디
- java
- 깃
- OS
- IT
- 자료구조
- Effective Java
- 뮤텍스
- 자바
- 컴퓨터공학
- 깃허브
- 알고리즘
- CS
- 스프링
- package-private
- Today
- Total
목록분류 전체보기 (112)
주니어 개발자 성장기
메인 사진은 언젠가 장독대에서 막걸리와 함께한 파전이다.개요지난 10월부터 12월까지 개발, 커리어 관련해 내 삶을 정리해보자. 미리 말하지만 그냥 일기에 가깝다. 원래 2024 Q1 회고를 쓰려다가 의외로 작년에 한게 많아서 너무 길어졌다. 그래서 따로 뺌. 10-12월10월은 자소서쓰느라 정신이 없었다. 11월에도 마찬가지였고 개발은 거의 못했었고 서류만 준비 했었다.우선 내가 했던 것들을 나열해 보자. 지원서 작성다음 3가지만 아니라면 거의 다 지원했었던 것 같다.주 근무지가 수도권 밖커리어 개발이 힘든 곳들(C, C++ 위주)블라인드나 잡플래닛 평가가 너무 안좋은 곳들공고는 주로 학교 취업 단톡방에 올라오는 공고 위주로 했었다. 솔직히 이거 빼고 안봤다 왜냐하면.. 자소서자기소개서 작성이 너무 어..
Noncontiguous allocation(불연속 할당/ 분산 할당) 하나의 프로세스가 메모리의 여러 영역에 분산되어 올라갈 수 있음 Paging address binding이 복잡해짐 동일한 크기의 페이지로 프로세스를 나눠 메모리에 적재 내부 단편화 발생 가능 페이지 테이블에는 각 페이지가 물리 메모리에 몇 번 프레임에 있는지 원소로 기록되어 있다. 논리 주소는 페이지 넘버($p$)와 오프셋($d$)로 구성되어 있다. Page Table의 구현 프로그램마다 페이지 테이블이 별도로 존재한다. 페이지 테이블은 메인 메모리에 상주한다. 그래서 모든 메모리 접근 연산에는 2번의 Memory access가 필요하다. 페이지 테이블 접근 1회 실제 data / instruction 접근 1회 Page-table..
물리 메모리 할당 메모리는 일반적으로 두 영역으로 나뉘어 사용한다. OS 상주 영역 interrupt vector와 함께 낮은 주소 영역 사용 사용자 프로세스 영역 높은 주소 영역에 있다. 사용자 프로세스 영역의 할당 방법 Contiguous allocation(연속 할당) 각각의 프로세스가 메모리의 연속적인 공간에 적재되도록 하는 것 외부 조각(external fragmentation) / 외부 단편화 분할(partition)의 크기가 작아 프로그램에 할당되지 못해 낭비되는 메모리 공간 내부 조각(Internal fragmentation) / 내부 단편화 프로그램에 할당되었지만 사용되지 않는 메모리 공간 고정 분할 할당(Fixed partition allocation) 물리적 메모리를 몇 개의 영구적 ..
논리 주소(logical address) 프로세스마다 독립적으로 가지는 주소 공간 각 프로세스마다 0번지부터 시작한다. CPU가 보는 주소는 logical address이다. 물리 주소 메모리에 실제 올라가는 위치 주소 바인딩: 주소를 결정하는 것 Symbolic Address -> Logical Address -> Physical Address Logical Address에서 Physical Address으로의 변화 시점(next page)이 언제인가? Compile time binding 물리적 메모리 주소(physical address)가 컴파일 시 알려짐 시작 위치 변경시 재컴파일해야 한다. 컴파일러는 절대 코드(absolute code)생성 현재는 거의 사용되지 않음 Load time bindi..
교착상태(Deadlock) 일련의 프로세스들이 서로가 가진 자원(SW || HW)을 기다리며 block된 상태 자원이란? 하드웨어, 소프트웨어 등을 포함하는 개념 EX) I/O device, CPU cycle, memory space, semaphore 등 프로세스가 자원을 사용하는 절차 요청(Request), 획득(Allocate), 사용(Use), 반납(Release) 발생 조건 Mutual exclusion(상호 배제) 매 순간 하나의 프로세스만이 자원을 사용할 수 있음 No preemption(비선점) 프로세스는 자원을 스스로 내어놓을 뿐 강제로 빼앗기지 않음 Hold and wait(점유 대기) 자원을 가진 프로세스가 다른 자원을 기다릴 때 보유 자원을 놓지 않고 계속 가지고 있음 Circula..
세마포어의 문제점 코딩하기 힘들다. 정확성(correctness)의 입증이 어렵다. 자발적 협력(voluntary cooperation)이 필요하다. 한 번의 실수가 모든 시스템에 치명적인 영향을 줄 수 있다. 실수 예시 Mutual Exclusion이 깨짐 V(mutex); Critical Section P(mutex); Deadlock 발생 P(mutex); Critical Section P(mutex); Monitor 동시 수행중인 프로세스 사이에서 abstract data type의 안전한 공유를 보장하기 위한 high-level synchronization construct 이다. Monitor에서 자체적으로 프로세스의 접근을 관리하기 때문에 세마포어와 달리 개발자가 직접 Lock을 걸 필요가 ..