분류 전체보기
군생활 중 공정근무프로그램 만들었던 이야기..
1. 부대 근무 환경 군생활을 기동대대에서 했다. 사단 직할 기동이라 불침번을 제외하고서는 근무가 없어야하는데,, 출동 시간을 줄이기 위해, 사단본부가 아닌 연대 본부에 위치해 있었던 관계로 이런저런 근무를 짬맞기 일쑤였다. 순찰 근무, 탄약고 경비 근무, 1년에 한번 예비군 훈련까지.. 부대의 환경이 자주 바뀌다보니 근무 형태도 자주 변경되었다. 더군다나 일일이 중대 행보관이 수기로 근무표를 작성하다 보니 누구는 근무를 많이 서는 일이 생기거나, 연달아 계속 들어가는 일도 생기기도 했다. 2. 중대 행정 업무 프로그램 제작기 많은 행정 작업이 한셀로 이루어지고 있었는데, 엑셀 VBA 코드를 사용할 수 있다. 그 때 당시 간단한 문서작업들을 자동화하면서 이곳저곳에 도움을 주고 다녔다. 그래서 VBA로 자..
![[도메인 주도 설계 철저 입문] 12. 도메인의 규칙을 지키는 "어그리게이트"](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FRzhOh%2FbtrAGe9FPQd%2FAAAAAAAAAAAAAAAAAAAAAPWPQMPjHIlBRv-1iprMQo-IS2xaRxtapLXF3WrWd07Q%2Fimg.jpg%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DinGrs%252BDXK%252Bdq2v21nyFtIw0ku6E%253D)
[도메인 주도 설계 철저 입문] 12. 도메인의 규칙을 지키는 "어그리게이트"
어그리게이트란? 여러 객체가 모여 한가지 의미를 갖는 하나의 객체가 될 때, 이를 어그리게이트라고 할 수 있다. 어그리게이트는 경계와 루트를 갖는다. 루트는 어그리게이트 내의 특정한 객체인데, 외부에서 어그리게이트를 다루는 모든 조작은 루트를 거쳐야만 한다. 어그리게이트에 포함되는 객체를 외부에 노출하지 않음으로써 객체를 안전하게 다룰 수 있다. 객체를 다루는 기본 원칙 질서 없이 어그리게이트 내의 객체들을 다루게 되면, 객체의 논리적 일관성을 유지하기가 어렵다. UserName userName = new UserName("gildong"); user.name = userName; // 바람직하지 않은 변경 시도 user.changeName(userName); // ok 위와 같이 사용자의 이름을 변경 ..
![[전공생이 설명하는 OS] 쓰레드(Thread)와 동기화 문제](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FNT2MW%2FbtrAKuZuXQ8%2FAAAAAAAAAAAAAAAAAAAAAPrhOsXW-zohpy1urwd3ZPytPwQ2YEpoHOJoIHn6vgsh%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DbpPrbYvOTOolMXJnSV5GW6tx7rw%253D)
[전공생이 설명하는 OS] 쓰레드(Thread)와 동기화 문제
1. 쓰레드의 의미 프로세스의 의미를 두가지 측면에서 설명할 수 있다. (자원 관점) 자원 소유자로서의 최소 단위 (제어 관점) schedule 의 최소 단위 / 실행의 단위 보통 개발할 때 하나의 실행 흐름(single execution sequence)만 생각하기 쉽다.. 하지만 실제로 프로세스에는 실타래와 같이 여러개의 실행흐름(multiple execution sequence)이 존재할 수 있다. 이 때 실행의 단위(the unit of execution sequence)를 thread 라고 정의한다. 따라서 현대 os에서 multithreading은 단일 프로세스 내에서 여러개의 실행 흐름을 지원할 수 있는 능력을 의미한다. 가장 중요한 점은 다수의 thread는 같은 프로세스 내의 자원을 공유..
![[전공생이 설명하는 OS] 멀티 코어 프로세스 스케줄링](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fc2tQoT%2FbtrALukeHTh%2FAAAAAAAAAAAAAAAAAAAAADg0fnLUKW8FF6bX_yFKwhJKsJJEBC3rIdWGaeKG59mQ%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DGxUz8Y6hdbbUWdP6HybAvQXq6M8%253D)
[전공생이 설명하는 OS] 멀티 코어 프로세스 스케줄링
이전 글 참고 단일 프로세스 스케줄링 & 시뮬레이션 결과 분석 1. Scheduling 분류 3가지 (1) Long-term schedule - job scheduler 라고도 한다. - 제출된 프로그램 실행 요청 중에서 어떤 것을 프로세스로 실행시킬 지 결정하는 스케줄링이다. - 사용자가 OS에 프로그램 실행. letsmakemyselfprogrammer.tistory.com 1. 고려해볼 만한 요소들 단일 코어에서는 언제, 어떤 프로세스를 실행시킬지만 결정하면 되는 문제였다. 하지만 멀티코어 환경에서는 고려해야 할 요소들이 꽤나 복잡하다. ready queue 를 어떻게 운영할 것인가? 한개의 global 큐만 사용할 것인가? 코어 당 한개씩 큐를 사용할 것인가? Cache affinity 를 어떻게..
![[전공생이 설명하는 OS] 프로세스 스케줄링(feat. 알고리즘 장단점 비교)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FEWIMH%2FbtrAIggjk9I%2FAAAAAAAAAAAAAAAAAAAAAMzGr8yNf0_4dHI9CwHSlMsMXcBKNgNl2rH4CkeGfFkN%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DtZNlcPRWuvz9cLppX4A0BXvRtLs%253D)
[전공생이 설명하는 OS] 프로세스 스케줄링(feat. 알고리즘 장단점 비교)
1. Scheduling 분류 3가지(1) Long-term schedule - job scheduler 라고도 한다. - 제출된 프로그램 실행 요청 중에서 어떤 것을 프로세스로 실행시킬 지 결정하는 스케줄링이다. - 사용자가 OS에 프로그램 실행 요청을 제출 -> `요청 대기큐` - OS는 `요청 대기큐` 중 어떤 프로그램을 `ready state 큐`로 admit 할지 결정해야한다. - admit 되어서 실행가능한 대기 상태가 되면, 프로그램에 대한 PCB가 만들어져 프로세스가 된다. (2) Mid-term schedule - swapper 라고도 하며, 보통 swap function 을 가리키는 말. - multiprogramming 의 정도를 결정하는 요인이 된다. - swap..
![[전공생이 설명하는 OS] 프로세스(Process)란?](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbLjeWt%2FbtrADECgs52%2FAAAAAAAAAAAAAAAAAAAAAFNZCarVGj9nWXzisolPfzGdxIluLgF7W-26pDqSxO2q%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DYqROj477pdqS%252BJDDQezZ4cy3sEA%253D)
[전공생이 설명하는 OS] 프로세스(Process)란?
1. Program vs Process - program : 디스크에 byte sequence로 저장되어 있는 passive entity - process : 메모리에 execution sequence 로 load 되어 있는 active entity 2. Process Description `프로세스` 를 설명할 때는 크게 3가지의 맥락을 고려한다. (1) 시스템 수준에서 os 가 프로세스를 관리하기 위한 정보(2) User Program level 에서의 정보 (text code, data, stack, ...)(3) 프로세스를 실행하는 하드웨어의 수준의 정보 (1) System Level OS의 관리 대상이라는 점에서 프로세스를 바라본다. OS 는 프로세스 전체 목록을 가지고 있다. 이를 p..
![[전공생이 설명하는 OS] 쉽게 읽는 OS의 발전 이야기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fc9K7pF%2FbtrAz66I64D%2FAAAAAAAAAAAAAAAAAAAAAHi2uNM7il-hv9Aehe-ZQHKUI1sXutw5mHlCZQI4ziUl%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DqnM%252B%252BUCw%252BEnevJ0U0LXwfNrwIQI%253D)
[전공생이 설명하는 OS] 쉽게 읽는 OS의 발전 이야기
1. OS 의 목적 OS는 자원관리자로서의 성경이 강하다. 주로 기기 사용자가 안전하고 효율적으로 하드웨어를 사용할 수 있도록 돕는다. OS 의 목적은 크게 3가지로 나타낼 수 있다. 편의성. 컴퓨터 사용자가 하드웨어를 조작하기 위한 instruction 이나 구현방법 등을 알지 못해도 안전하게 사용할 수 있게 한다. 효율성. 사용자 경험을 최대화하기 위해 cpu utilization, cache memory, scheduling 등 자원을 관리 한다. 유연함. OS 가 개선될 때, 기존 User Application 에 영향을 주지 않으면서 발전할 수 있도록 한다. 2. OS의 발전 William Stalling 교재에서는 OS 의 발전을 크게 4단계로 구분한다. 1) Serial Processing ..
[JVM] 레퍼런스
GC 관련 HotSpot Virtual Machine Garbage Collection Tuning Guide One strength of the Java SE platform is that it shields the developer from the complexity of memory allocation and garbage collection. docs.oracle.com JVM specification The Java® Virtual Machine Specification Tim Lindholm Frank Yellin Gilad Bracha Alex Buckley Daniel Smith docs.oracle.com Java concurrency 정리 잘된 블로그 https://jenkov.com/..