Allocation of Frames

여러개의 프로세스에게 어떻게 page frame을 할당할 것인가?

SW 측면에서 loop 내의 page는 한꺼번에 allocate 되는 것이 유리하다. 

그렇지 않은 경우 매 loop 마다 page fault가 발생할 수 있다.

Fixed Allocation

- Equal allocation : 각 프로세스에게 동일한 개수의 frame을 할당하는 방식

- Proportional allocation : 각 프로세스의 크기에 비례하여 frame을 할당하는 방식

 

Priority Allocation

: 프로세스의 중요도를 기반으로 frame을 할당하는 방식

I/O 를 감소시켜 waiting 상태의 시간을 줄여 실행이 빨리 끝날 수 있다.

page fault가 발생하는 경우 낮은 우선순위 프로세스의 frame을 선택하여 교체하도록 한다.

 

*Global vs Local Replacement

Global Replacement : replacement frame을 전체 frame에서 선택하도록 한다. 하나의 프로세스는 다른 프로세스의 frame을 가져와 사용할 수 있다. 동적으로 관리할 수 있고 circular queue로 관리하는 경우 전체 시스템으로 하나로 관리 할 수 있다.

Local replacement : 각 프로세스는 해당 프로세스 내에서 frame을 선택할 수 있다.

 

Thrashing

- 프로세스가 충분한 page를 갖지 못한다면 page fault rate가 높아지고 이는 CPU utilization을 떨어트린다.

- 프로세스의 잦은 page swapping으로 CPU 성능이 떨어지는 상태

Locality

프로그램의 메모리는 임의 시간 내에 프로그램의 일부분을 집중적으로 참조하는 고도의 지역성을 갖는다.

시간 지역성 : 현재 참조된 메모리가 가까운 미래에도 참조될 가능성이 높음 (loop, subroutine, stack)

공간 지역성 : 하나의 메모리가 참조되면 주변의 메모리가 계속 참조될 가능성이 높음(Array Traversal, 명령의 순차 실행)

 

Locality를 어떻게 계산할 것인가? 

 

Working-Set Model

- 현재 시점의 지역성을 확인하기 위한 목적으로 사용되는 working-set window를 사용

- working-set window가 너무 작은 경우 지역성을 반영하지 못한다.

- 각 프로세스의 working-set size의 합은 사용가능한 전체 frame의 크기보다 크면 Thrashing 상태가 된다.

이때 , 프로세스는 suspend 되도록 한다.

- 매번 working-set을 계산하는 것은 cost가 많이 필요하다.

 

Page-Fault Frequency Scheme

적절한 Page fault의 상한선,하한선 기준을 정해 벗어나는 경우 조치하도록 한다.

상한선 보다 높아지는 경우 frame을 더 할당해주며 하한선 보다 낮아지는 경우 frame을 회수한다.

-> Working set 방식은 page 참조 시마다 페이지 집합을 수정하고 PFF 방식은 page fault 발생 시에만 페이지 집합을 수정하여 오버헤드를 상대적으로 줄인다.

 

Virtual Memory 의 장점 (프로세스 생성 시)

Copy-on-Write

부모와 자식 프로세스가 처음에는 같은 page를 공유하도록 하고 write를 하는 순간 page를 복사하고 복사한 page에 write 작업을 수행

기본적으로는 page를 공유하도록 하고 write 할 때 copy 하여 수행하도록 하여 메모리 사용 효율성을 높일 수 있다.

Memory-Mapped Files

프로세스의 가상 공간 중 일부를 디스크에 있는 파일의 블록에 매핑하는 방식이다.

기존의 system call 의 오버헤드를 줄일 수 있다. (I/O를 줄일 수 있다.)

즉, 디스크 파일의 일부와 매핑하여 file system을 통한 과정을 거치지 않아 속도가 빠르고 I/O 발생으로 인한 오버헤드가 줄어든다.

Prepaging

일반적으로 페이징 기법을 사용할 때 초기에는 page fault가 반드시 발생한다.

이러한 page fault를 줄이기 위해 Prepaging으로 미리 올려둬서 page fault 를 줄일 수 있다.

 

Page size

- Page size가 과도하게 큰 경우 Internal fragmentation이 발생 할 수 있다.

- Page size가 작은 경우 Page table size가 커질 수 있다.

- Page size가 커지면 locality를 정확히 구분하기 어렵다.

 

I/O Interlock

- page가 memory에서 lock 상태가 되어야 하는 경우가 필요하다.

예를들어 디스크에서 외부저장장치로의 이동을 위해 buffer에 있는 경우 page 교체가 일어나면 정상적으로 파일이동이 불가하다.

이러한 경우 page가 교체되지 않도록 보호해줄 필요가 있다.

'Development > OS(Operating System)' 카테고리의 다른 글

Virtual Memory(1)  (0) 2023.05.20
Deadlock  (0) 2023.05.09
Process Synchronization(2)  (0) 2023.04.08
Computer System Overview2  (0) 2023.04.01
Process Synchronization(1)  (0) 2023.03.30

안녕하세요🤗

생일 기념으로 그랜드하얏트호텔에 있는 TEPPAN을 다녀왔습니다🥳

예약이 정말 어렵다는...저는 여자친구님이 데려가주셨습니다 (감사합니다😍)

위치는 그랜드 하얏트 서울 지하에 위치하고 있습니다!

지하철을 이용하는 경우 한강진역에서 내려서 도보로 이동하거나 택시를 타도 좋을 것 같습니다!

입구부터 깔끔하고 고급스러운 느낌이 가득하네요🤩

들어가면 입구쪽과 안쪽 창가쪽으로 바테이블 구역이 2개로 나누어집니다!

저희는 입구쪽 바테이블 자리에 안내받았습니다!

자리를 안내받으면 식기가 세팅되어있고 메뉴 설명서(?)를 주십니다!

계절에 따라 컨셉을 바꾸는 듯 합니다!🌸

오마카세 형식의 철판 요리 코스라고 생각하면 될 것 같습니다!

메인요리는 대부분 한우를 택하시는 것 같아요😋

코스가 시작되기 전 골드 캐비어를 설명해주시며 사진도 찍게 해주십니다😯📷

코스 시작 전 에피타이저

소스가 정말 독특하고 전체적으로 깔끔한 맛이었습니다.

첫번째 골드 캐비어가 올려진 아귀 요리

자극적이라기보다는 신선하고 봄의 느낌이 입안에서 맴도는 듯한 맛이었습니다!

다음으로 오리요리에 트러플가루를 올려주셨습니다. 오른쪽은 참나물을 만두처럼 만든 것입니다!

부드럽고 참나물로 만든 만두 역시 신선한 봄향이 입안에서 맴도는 느낌이었습니다!🌿

한우는 그냥 사르르 녹습니다. 그리고 소스가 개인적으로 정말 맛있습니다!🤤

중간에 제공되는 딸기와 콤부차!

마지막으로 볶음밥...😋

마지막으로 꿀 아이스크림을 주시는데 기념일 말씀드리면 초를 꽂아 주십니다!

주로 기념일에 많이 오시는지 옆에 분들도 다 초를 꽂아주셨습니다🎂

⚠️은근 양이 많습니다!

마지막으로 차와 다과를 준비해주십니다!

다과는 사진에 보이는 것 중 2개를 선택할 수 있습니다☕️

 

전체적으로 정갈하다는 느낌을 받았고 자극적이기 보다는 깔끔하면서 입이 즐거운 음식으로 구성되었다고 생각합니다!

특별한 기념일에 가기에는 추천드립니다😊

 

TIP : 사전에 예약시 생일자 초콜릿을 요청하면 이름이 담긴 초콜릿 세트를 준비해줍니다!

생일 기념이신 분은 미리 확인 후 준비하는 것도 추천드립니다❗️

'Hobby > Food' 카테고리의 다른 글

포시즌스호텔서울 아키라백  (0) 2023.04.28
이속우화 천공  (2) 2023.04.17
강남역 목살 맛집 봉우이층집  (1) 2023.04.11

[위령공 13]

장문중은 직위를 훔친 자이다. 유하혜의 현명함을 알면서도 그와 함께 조정에 서지 않았다.

 

장문중광 유하혜는 노나라의 대부이다. 장문중이 유하혜의 현명함을 알고도 조정에 세우지 않음을 말하며 지인의 안목과 용인의 덕목을 갖춰야 하는 벼슬아치의 능력과 의무를 말하며 장문중을 비판하고 있다.

 

[위령공 22]

군자는 말만 듣고서 사람을 등용하지 않고, 사람만 보고서 말까지 버리지는 않는다.

 

군자는 다른 이의 말만 듣고 경솔히 등용하지 않으며 사람의 신분과 행위를 바탕으로 말까지 평가하고 판단해서는 안됨을 의미한다.

 

[계씨 4]

유익한 벗에 세 가지, 해로운 벗에 세 가지가 있다. 정직한 사람과 벗하고 미더운 사람과 벗하며 견문이 많은 사람과 벗하면 이롭다. 겉치레만 하고 곧지 않은 사람과 벗하고 아첨을 잘 하는 사람과 벗하며, 말만 번지르르한 사람과 벗하면 해롭다.

 

유익한 벗과 해로운 벗의 세 가지 특징에 대해서 말하고 있다.

편벽 : 말하는 것만 익숙하고 실상은 없는 것

 

[계씨 10]

군자에게는 아홉 가지 생각할 것이 있다. 볼 때는 분명히 보았는가 생각하고, 들을 때는 명확히 들었는가 생각하고, 얼굴빝은 온화하게 했는가 생각하며, 말은 진실한지를 생각하고, 일을 처리할 때는 신중히 했는지 생각하고, 의심이 날 때는 물어보기를 생각하고, 화가 날 때는 뒤에 생길 어려운 일을 생각하고, 재물을 보면 의로운 것인가 생각한다.

 

생각한다는 것은 곧 조심해야 할 것, 주의해야 할 것이라는 것을 의미하며 군자가 생각할 아홉가지에 대해서 설명한다.

 

[계씨 12]

제나라 경공은 말 4천 필을 가졌어도 그가 죽을 때 백성들이 그의 덕을 칭송하지 않았다. 백이와 숙제는 수양산 아래에서 굶어 죽었지만 백성들이 지금까지 그들을 칭송한다. 그것이 이걸 두고 이르는 말인가.

 

부유함을 가진 인물이 칭송받는 것이 아닌 덕을 가진 인물이 칭송받는 다는 것을 의미한다.

 

[계씨 13]

진항과 백어

"당신은 특별한 말을 들은 게 있습니까?"

"없습니다. 전에 홀로 서 계시는데 내가 종종걸음으로 뜰을 지나는데, 말씀하시기를 '시를 배웠느냐?' 하셔서 '아직 배우지 못했습니다' 하였더니, '시를 배우지 않으면 말을 할 수 없느니라' 하셨습니다. 그래서 저는 물러나 시를 배웠습니다. 다른 날 또 홀로 서 계실 때 내가 종종걸음으로 뜰을 지나는데, 말씀하시기를 '예를 배웠느냐' 하셔서 '아직 배우지 못했습니다' 하자 '예를 배우지 않으면 남 앞에 설 수가 없다' 고 하셨습니다. 그래서 나는 물러나서 예를 배웠습니다. 이 두 가지를 들었습니다."

"하나를 물어서 셋을 얻었다. 시를 들었고, 예를 들었고, 군자가 그 아들을 편애하지 않는다는 것을 들었다."

 

백어는 공자의 친아들이다. 진항이 백어에게 물음으로서 공자가 아들이라고 하여 다른 문인과 차별하는 부분이 없음을 알 수 있다.

공자는 혈연중심주의, 연고주의에서 벗어나 가족에서조차도 공공성을 실현하며 가까운 가족에서 시작하여 사회로 확장하는 공자의 이념을 확인 할 수 있다.

 

 

'교양 > 논어' 카테고리의 다른 글

헌문,양화 편  (0) 2023.05.19
공야장, 자로 편  (2) 2023.05.15
태백.자한.향당 편  (1) 2023.05.07
위정편  (0) 2023.04.23
학이편  (1) 2023.04.23

Virtual Memory

: logical memory 와 physical memory를 분리

프로그램 실행을 위해서는 logical memory가 모두 physical memory에 올라와 있어야한다.

하지만 실제 주소 공간은 논리적 주소공간보다 작다.

효율적인 공간 사용을 위해 CPU 입장에서는 다 올린 것 처럼 보이도록 하고 실제로는 실행에 필요한 부분만 메모리에 올리는 방법이다.

 

Demand Paging

CPU가 접근하여 필요로 할 때 page를 memory에 올린다.

- I/O 발생이 줄어든다.

- 메모리 사용이 줄어든다.

- 응답 속도가 빨라진다.

 

vaild-invalid reference를 memory에 올리는 과정에 사용한다.

 

Lazy swapper

- page가 필요한 경우에만 swap을 한다. page를 다루기에 pager 이라고도 한다. 

 

Valid-Invalid Bit

Valid(v)

- 메모리에 있는 상태

Invalid

- illegal : 해당 프로세스의 주소 공간이 아닌 경우

- not-in-memory : 해당 페이지가 메모리에 업로드 되지 않은 경우

- obsolete : disk에서 업로드되었지만 실제 데이터가 updated 되어버린 경우

 

주소변환이 일어날 때 invalid 상태인 경우 "page fault" 라는 핸들러를 통해 다룬다.

valid-invalid bit 사용

Page Fault

invalid page에 대한 접근은 trap을 발생시킨다. (page fault trap)

 

[ page fault handler 처리 과정 ]

1. illegal reference인 경우 해당 프로세스를 중단한다.

2. memory에 없는 경우라면 빈 page frame을 찾는다. free frame이 없는 경우 replace 과정을 진행한다.

3. page를 해당 frame으로 읽어온다.

4. CPU가 프로세스에게 할당할 때 page fault trap은 종료된다.

5 . page fault를 발생시킨 명령어를 다시 재시작한다.

page fault 처리과정

Page replacement Algorithm

freeframe이 없는 경우 victim page를 선정하여 교체 과정을 진행해야 한다.

page fault를 최소화하여 replacement 과정이 이루어지도록 하는 것이 필요하다.

 

First-In-First-Out(FIFO) Algorithm

- frame에 먼저 들어온 순서대로 replace 과정을 진행하는 알고리즘이다.

- frame 개수가 늘어나는 경우 이론상 page fault가 줄어야 하지만 늘어나는 현상이 발생한다.(Belady's Anomaly)

FIFO Algorithm 예시

Optimal Algorithm

- 이론상 최적의 알고리즘으로 미래 예측이 가능해야한다. 실제로는 불가능하므로 다른 알고리즘 성능을 평가하기 위해 사용된다.

최적 알고리즘 예시

Least Recently Used Algorithm(LRU)

- 과거의 사용을 기반으로 미래를 예측한다는 의미

- 과거에 가장 적게 사용된 것은 미래에도 사용되지 않을것이라 판단하고 victim page로 선정한다.

- timestamp를 사용하여 각 page의 최근 사용시간을 확인하여 찾아낸다. -> timestamp(I/0) 와 최소값을 찾는 과정의 오버헤드가 크다!

LRU 예시

LRU Implementation Algorithms

: LRU의 timestamp 사용과 최솟값을 찾는 과정에 발생하는 오버헤드를 최소화하기 위해 사용하는 방식이다.

1) Counter implementation

- 정확한 시간은 필요없으니 상대적인 순서만 이용하기 위해 CPU counter를 사용하는 방식

2) Stack impementation

-double link 형식의 stack 구조를 사용하여 top에 최근 사용 page를 기록하는 방식 -> 자료구조 유지에 대한 오버헤드가 발생

 

LRU Approximation Algorithms

: 오버헤드를 최소화하며 LRU 처럼 동작하도록 하는 알고리즘

1) Reference bit

- 초기값을 0으로 설정하고 주기적으로 0으로 reset 해준다. (0인 경우 교체를 해준다.)

 

2) Additional-Reference-Bits Algorithm

- 주기적으로 오른쪽으로 한칸씩 이동해준다. bit 값이 큰 것이 사용이 많이 됨을 알 수 있다. -> 8비트 사용과 최솟값을 찾기 위한 오버헤드 발생

 

3) Second chance(clock) Algorithm

- 포인터를 사용하여 원형 큐를 사용한다.

- 포인터를 하나씩 이동하며 reference bit을 확인하고 1인 경우 0으로 바꾸고 0인 경우 replace를 한다.

- 기존의 자료구조,최솟값 찾는 알고리즘 등으로 인한 오버헤드가 사라진다.

- 원형구조로 사용되어 같은 reference bit가 0이어도 순서구분이 가능해진다.

clock 알고리즘 예시

 

'Development > OS(Operating System)' 카테고리의 다른 글

Virtual Memory(2)  (0) 2023.06.06
Deadlock  (0) 2023.05.09
Process Synchronization(2)  (0) 2023.04.08
Computer System Overview2  (0) 2023.04.01
Process Synchronization(1)  (0) 2023.03.30

[헌문 7]

군자이면서 인하지 못한 사람은 있으나, 소인이면서 인한 사람은 없다.

 

주자 집주 중 '사씨가 말했다. 군자는 인에 뜻을 두고, 있으나, 잠깐 사이라도 마음이 거기에 있지 않으면 불인이 되는 것을 면치 못할 것이다."

군자도 사람이기에 항상 인할 수 없다. 때로는 잠깐의 실수로 인해 인하지 못한 경우도 있음을 알 수 있다.

 

[헌문 8]

아낀다고 해서 수고롭게 하지 않을 수 있겠는가. 충성한다고 해서 깨우치게 하지 않을 수 있겠는가.

 

백성을 아낀다고 해서 당장 편안함만 취하게 하지 않아야 하고 군주에게 충성하면서도 과실이 있는 경우 고치도록 해야함 의미한다.

 

[헌문 9]

(정나라는) 외교문서를 작성할 때 비심이 초고를 쓰고 세숙이 검토해 의견을 제시했으며 외교관인 자우가 수정하고 동리땅 사람 자산이 매끄럽게 다듬었다.

 

비심,세숙,자우,자산 은 정나라의 대부들이다.

외교 정책 과정이 자세하고 정밀하며 신중하게 이루어졌음을 긍정적으로 평가하고 있다.

 

[헌문 19]

공숙문자의 가신인 대부 선이 공숙문자와 함께 공경의 자리에 올랐다. 공자께서 그 소식을 듣고서 말씀하셨다. "시호를 문이라고 할 만하다."

 

선은 원래 공숙문자의 가신이었는데 공숙문자는 자신이 부리던 가신을 끌어올려 자기와 같은 위치에 있게 하였다.

시호 문은 '이치에 따름으로써 빛나는 모양을 이룸' 이라는 의미이다.

공문자를 향한 칭찬의 의미로 해석할 수 있다.

 

[헌문 25]

옛날 배우는 자들은 자기 수양을 위해서 배웠는데, 오늘날 학자들은 남의 인정을 받으려고 배운다.

 

학문의 2가지 경향을 확인할 수 있다.

1. 위기지학 : 나를 위한 이기주의적 공부를 의미하는 것이 아니라 다를 대상으로 알아 자신의 도적 향상을 이루고 꾸려가는 것을 의미한다.

2. 위인지학 : 이타주의적 공부를 의미하는 것이 아닌 바깥의 가치에 얽매여 나를 잃게 된다는 것을 의미한다.

 

[헌문 42]

공자께서 위나라에서 석경을 치고 계셨다. 삼태기를 메고 공자의 문을 지나던 사람이 말했다. "마음이 있는구나, 경쇠 치는 소리에." 이윽고 다시 말했다. "비속하도다, 쨍쨍거리는 소리여. 자기를 알아주지 않으면 그만둘 뿐이다. '물이 깊으면 (아래옷을) 벗고 건너고, 얕으면 (옷을) 걷고 건너라' 했다." 공자께서 말씀하셨다. "과연 그러하구나. (그렇게 하면) 어려움이 없겠지."

 

마음은 당시 상황, 시대를 걱정하는 마음을 의미한다.

1. 세상에 맞춰사는 모습을 감탄하는 것으로 해석할 수 있다.

2. 그럼에도 불구하고 그 길을 가야한다는 의지로 공자의 의지를 표현하는 것으로 해석할 수 있다.

 

[양화 2,3]

타고난 성품은 서로 비슷하지만 습관에 의해 서로 멀어진다.

 

오직 지극히 지혜로운 사람과 지극히 어리석은 사람은 변화시킬 수 없다. 

 

경험.환경.학습.교육 에 따라서 달라질 수 있음을 의미한다.

 

[양화 18]

자주색이 붉은색을 뺏는 것을 미워하고, 정나라 음악이 아악을 어지럽히는 것을 미워하며, 말재주로 나라를 뒤엎는 것을 미워한다.

 

자주색은 혼합하여 탁한 것을 의미하고 붉은 색은 순정한 색을 의미하며 정나라 음악은 음탕한 음악을 의미한다.

가짜가 진짜처럼 행세하는 것, 말류가 본질을 어지럽히는 것, 겉치레 말로 공동체를 망치는 것을 표현하고 있다.

 

[양화 26]

마흔이 되어서도 미움을 받는다면 그야말로 끝이다.

 

마흔이라는 나이는 자기 길과 원칙에 대한 확고한 목표와 신념을 가질 나이를 의미함을 알 수 있다.(위정 4)

따라서 마흔이 되어서도 그런 자세를 갖지 못한다면 안된다는 것을 의미한다.

 

 

 

 

'교양 > 논어' 카테고리의 다른 글

위령공,계씨 편  (0) 2023.05.29
공야장, 자로 편  (2) 2023.05.15
태백.자한.향당 편  (1) 2023.05.07
위정편  (0) 2023.04.23
학이편  (1) 2023.04.23
try
{...}
catch(ExceptionClass1 e)
{...}
...
catch(ExceptionClassN e)
{...}
finally
{
	CodeToBeExecutedInAllCases
}​
throw new ExceptionClassName(SomeString);

Java library softeware는 비정상적인 동작이 발생 했을 때 신호를 보내는 체계를 갖고 있다.

이를 throwing an exception이라고 한다.

예외적인 상황을 처리하는 코드를 제공해야하는데 이를 hadling the exception이라고 한다.

 

try-throw-catch

Java에서는 기본적으로 try-throw-catch를 사용하여 exception handling을 한다.

try에서는 기본적인 코드를 수행한다.

try문에서는 exception을 throw하는 코드를 포함할 수 있다.

throw 되는 경우 이후의 try 문 수행은 중단되고 catch 문으로 넘어가게 된다.

 

throw statement는 함수 호출과 유사하다.

throw new ExceptionClassName(SomeString);

ExceptionClassName 클래스의 객체가 생성된다.

throw 문은 함수를 호출하는 대신 catch block을 불러온다.

 

exception이 throw 되면 catch block 이 실행되기 시작한다.

catch block의 실행을 cathcing the exeception 혹은 handling the exception이라고 한다.

catch(Exception e)
{
	ExceptionHandlingCode
}

e 는 catch block parameter이다.

이 매개변수는 두 가지 역할을 한다.

1.  thrown exception 객체의 유형을 구체화한다.

2. thrown exception 객체를 잡기 위한 이름으로 사용된다.

 

<try-throw-catch 예시>

try
{
	if(men == 0 && women == 0)
		throw new Exception("Lesson is canceled. No students.");
	else if (men ==0)
		throw new Exception("Lesson is canceled. No men. ");
	else if (women ==0)
		throw new Exception("Lesson is canceled. No women.");
        
	if (women >= men)
		System.out.println("Each man must dance with " + women/(double)men + "women.");
	else
		System.out.println("Each woman must dance with " + men/(double)women + "men.");
}
catch(Exception e)
{
	String message = e.getMessage();
	System.out.println(message);
	System.exit(0);
}

 

getMessage Method

...//method code
try
{
	...
	throw new Exception(StringArgument);
	...
}
catch(Exception e)
{
	String message = e.getMessage();
	System.out.println(message);
	System.exit(0);
}

모든 exception은 message를 포함한 String 인스턴스 변수를 갖는다. (주로 exception의 이유를 포함)

StringArgument는 Exception 생성자의 인자이다.

e.getMessage()는 해당 string을 반환하게 된다.

 

Multiple catch Blocks

try block 이후에 다른 유형의 exception을 잡는 catch block이 여러 개 올 수 있다.

catch block이 여러개인 경우 catch block은 순서대로 실행된다.

catch (Exception e)
{...}
catch (NegativeNumberException e)
{...}

위와 같은 경우 NegativeNumberException 이 Exception type에 해당하므로 첫번째 catch문에서 잡히기 때문에 두 번째 catch 문이 사용되지 않게 된다.

올바르게 동작하기 위해서는 두 catch block의 순서를 바꿔야 한다.

 

finally Block

finally block은 exception throw 여부와 관계없이 실행된다.

try
{. . .}
catch(ExceptionClass1 e)
{ . . .}
 . . .
catch(ExceptionClass2 e)
{. . .}
finally
{
	CodeToBeExecutedInAllCases
}

'Development > OOP(Java)' 카테고리의 다른 글

Ch8. Polymorphism and Abstract Classes  (0) 2023.05.08
Ch6. Defining Classes(3)  (0) 2023.04.10
Project1 (Timetable application)  (0) 2023.04.05
Ch3. Flow of Control  (0) 2023.04.04
Ch5. Defining Classes(2)  (0) 2023.04.03

[공야장 9]

재여가 낮잠을 잤다. 공자께서 말씀하셨다. "썩은 나무는 조각할 수 없고, 썩은 토담은 흙손질할 수 없다. 너에게 무엇을 꾸짖을 것이냐." 그러고는 공자께서 말씀하셨다. "처음에 내가 사람을 대할 때, 그의 말을 들으면 그 행실을 믿었는데, 이제는 사람을 대할 때, 그 말을 듣고도 그 행실을 살피게 되었다. 재여 때문에 이렇게 바뀌었다." 

 

공야장편에서는 공자의 제자에 대한 평가가 등장하는 구절이 많다.

해당 구절에서는 재여라는 제자를 통해 말과 행동의 불일치에 대해서 얘기하고 있다.

말과 행동의 불일치는 결국 무질서로 연결된다는 의미를 담으며 공자는 재여의 언앵불일치를 지적하고 있다.

 

[공야장 16]

안평중은 사람들과 잘 사귀었다. 오랜 시간이 지나도 그를 공경한다.

 

안평중은 이름이 안영, 자가 평중인 인물로 춘추시대 제나라의 재상이다.

사람들과 잘 사귀는 인물인 안평중을 얘기하며 사람을 잘 사귀기 위해서는 공경하는 마음이 중요하다는 것을 알 수 있다.

 

[공야장 23]

누가 미생고가 정직하다고 하는가. 어떤 사람이 식초를 빌리러 갔더니 (자기 집에 없다고 하지 않고) 이웃에서 빌려다 그에게 주었다.

 

미생고는 '미생지신'이라는 고사의 주인공이다. 다리 밑에서 한 여인과 만나기로 약속한 것을 지키려 서 있다가 불어난 강물에 떠내려갔다는 인물이다.

미생고는 정직의 인물이지만 공자가 생각하는 '정직'이 아님을 의미한다. 공자가 생각하는 정직은 없으면 없다고 말하는 것이 '정직'이다.  위 구절에서 미생고의 행동은 남에게 굽실대는 아부 또는 가난을 속이는 사기라고 생각된다.

 

[자로4]

번지가 농사짓는 법을 배우기를 청하니 공자께서 말씀하셨다. "나는 늙은 농부만 못하다." 채소 심는 법 배우기를 청하니 공자께서 말씀하셨다. "나는 늙은 원예싸만 못하다." 번지가 나가자 공자께서 말씀하셨다. "소인이로다 번지는! 윗사람이 예를 좋아하면 백성이 감히 공경하지 않을 리 없고, 윗사람이 의를 좋아하면 백성이 감히 복종하지 않을 리 없으며, 윗사람이 신의를 좋아하면 백성이 감히 진심을 다하지 않을 리 없다. 이렇게만 하면 사방에서 아이를 들쳐업고 올 터인데 어느 겨를에 농사를 짓겠는가.

 

해당 구정을 번지가 현실적으로 생각하는 것을 공자에게 묻고 공자는 이런 번지의 생각이 잘못됨을 표현하고 있다.

당시 춘추전국시대는 국가,국경 개념이 없고 백성의 숫자가 국력이었다. 따라서 많은 백성을 모으는 것이 중요하였다.

이에 번지는 농사를 짓고 채소를 심는 법 같은 현실적인 것이 중요하지 않느냐고 하였지만 공자는 인,예,신의 기본적인 것을 지킨다면 백성이 공경하고 복종하게 될 것이라고 주장하고있다.

 

[자로5]

시 삼백 편을 다 외우더라도 정치를 맡겼을 때 잘 처리하지 못하고, 외국에 사신으로 보냈을 때 전결로 처리하지 못한다면, (시를) 많이 외운들 무슨 소용이 있겠느냐.

 

시 삼백편은 <시경>을 의미한다.

시는 사람들의 삶을 담고 사물의 이치를 포괄한 것이다. 구절만 외우는 공부가 아니라 제대로 이해하여 효용까지 이어지는 학문이 중요하다는 것을 알 수 있다.

 

[자로22]

공자께서 말씀하셨다. "남방 사람들 말에 '사람으로서 한결같은 마음이 없으면 무당이나 의원 노릇도 할 수 없다' 고 하니, 참 옳은 말이다. '그 덕을 한결같이 하지 않으면 혹 수치스런 일을 겪을 수 있다' 라 했다. 공자께서 말씀하셨다. "점을 치지 않을 따름이니라."

 

"점을 치지 않을 따름이니라." 의 의미는 운명론을 부정하는 부분이다.

일정한 지조가 없는 사람은 점을 쳐 볼 필요가 없다 / 마음이 정해지면 끝까지 밀어붙이는 것이지 다시 점칠 문제가 아니다 라는 두 가지 의미로 해석이 가능하며 운명론을 부정하고 자기 수련을 강조하는 구절이다.

 

[자로29,30]

"선한 사람이 백성을 칠 년 동안 가르치면 전쟁에 나가 싸우게 할 만 하다."

 

"가르치지 않은 백성으로 하여금 전쟁하게 하면, 이것은 그들을 버리는 것이다."

 

가르치는 것이란 효제충신 등의 행실, 농삿일, 무예 등을 가르치는 것을 의미하며 이러한 것들을 배워야 윗사람을 친애하고 어른을 위하여 죽을 줄 알기 때문에 백성이 싸움에 나갈만하다는 것을 의미한다.

 

정치란?

공야장, 자로 편에서는 공자가 생각하는 정치의 모습을 엿볼 수 있다.

공자는 실질적인 것만을 추구하는 것은 진정한 정치가 아니라 기본이 되는 인,예,신의 등의 근본이 되는 자세를 갖추고 그것들을 바탕으로 영향을 뻗쳐나가고 백성들이 자연스럽게 따르게 되는 것을 정치라고 생각하는 것으로 볼 수 있다.

 

 

'교양 > 논어' 카테고리의 다른 글

위령공,계씨 편  (0) 2023.05.29
헌문,양화 편  (0) 2023.05.19
태백.자한.향당 편  (1) 2023.05.07
위정편  (0) 2023.04.23
학이편  (1) 2023.04.23

📸 작년부터 목표로 삼았던 바디프로필 촬영...💪

 

바디프로필을 계획하는 분들에게 조금이라도 도움이 되고자 후기를 작성해보겠습니다🤗

 

준비기간 : 2023.02.15 ~04.09 (약 2달)

 

1. 시작

바디프로필을 결심했다면 촬영날짜,스튜디오,태닝샵 을 먼저 정하기

 

촬영날짜 : 보통 변경이 힘들기때문에 평소 일정과 그 당시 예정일정을 고려하여 픽스하는 것을 추천!

스튜디오 : 지인 추천, 인스타그램에서 원하는 스타일의 스튜디오를 검색 (보정,가격,컨셉,위치,개인촬영가능여부 등 고려)

태닝샵 : 집 근처, 가격, 후기를 참고하여 선정 (개인적으로 태닝 기계를 알아보고 선택하는 것도 좋을 것 같습니다😊)

처음엔 태닝을 꼭 해야하나 의문이 들었지만 경험자가 된 지금 태닝은 필수라고 생각💪🏾

 

스튜디오 예약, 태닝샵 등록까지 했다면 이제 지출한 비용을 생각해서라도 열심히 운동을 시작하게 됩니다😅

 

저는 계획을 대략적으로는 세웠지만 식단의 경우 명확히 하지 않아 중간에 수정하며 진행하였습니다!

PT를 등록해서 진행한다면 트레이너분이 관리를 해주시지만 저처럼 혼자서 준비한다면 사전에 계획을 철저히 하는 것을 추천❗️

 

2. 계획 

 

1) 식단

식단의 경우 준비기간동안의 식단을 미리 모두 계획해두는 것을 추천❗️

3개월 미만 남은 경우 치팅은 금물 (바프는 다이어트가 전부라고 생각해도 됩니다😭)

바디프로필 = 다이어트

 

저는 햇반, 난백, 닭가슴살, 설도로 하루 식단을 구성했습니다

 

fatsecret 어플 추천❗️(식단을 입력하면 영양소 통계를 자세히 확인 가능)

 

2) 운동

어떻게 분할을 하고 각 요일별로 어떤 운동을 할 것인지, 운동 횟수, 시간 등 계획

개인에게 맞는 방식으로 계획!

 

저는 가슴,등,하체 3분할 진행(상반신 촬영이라 하체는 주1회)

테크닉이 부족한 만큼 최대한 시간을 많이 투자해서 진행 (2~3시간)

유산소는 3주쯤 남았을 때 부터 진행하며 체지방률 감소

 

3. 목표를 향해 출발

모든 계획을 마쳤다면 준비기간 동안 열심히 달려보기🏃🏻

매일 사진을 찍어두고 변화를 기록해둘 것❗️

매주 인바디를 통해 변화를 확인❗️(체지방률 가장 중요)

음식의 유혹은 참을 것❗️(합리화 절대 금지 ❌)

스트레스 받지 않고 변화하는 모습에 보람을 느낄것❗️

 

단기간의 변화에 욕심내지말고 촬영하는 그날까지 노력한다면 반드시 좋은 결과물이 나옵니다🥹

 

 

Deadlock

프로세스가 서로 자원을 갖고 놓지 않아 다른 자원을 얻기를 기다리는 상태

 

Deadlock의 4가지 조건

Mutual exclusion : 한번에 단 하나의 프로세스만 자원을 사용할 수 있다.

No preemption : 프로세스가 자원을 놓는 과정은 자발적으로 이루어져야 한다.

Hold and wait : 프로세스는 적어도 하나의 자원을 갖고있는 상태에서 다른 프로세스가 갖고있는 자원을 기다리는 상태이다.

Circular wait : 자원을 갖고 기다리는 형태가 원형적으로 이루어져야 한다.

 

Resource-Allocation Graph

정점을 V, 간선을 E로 나타낸다.

V는 프로세스를 나타내는 P와 자원을 의미하는 R로 표현된다.

request edge - P1 -> Rj (P1이 Rj 를 요청)

assignment edge - Rj -> P1(Rj이가 P1에 할당됨)

 

graph가 cycle을 갖지 않으면 deadlock이 발생하지 않는다.

graph가 cycle을 갖는 경우 자원에 하나의 instance만 존재하는 경우에는 deadlock 발생, 여러 instance가 존재하는 경우 발생가능성이 있는 것.

왼쪽은 사이클을 형성하고 deadlock이 발생하는 경우, 오른쪽은 사이클을 형성하지만 deadlock 발생하지 않는 경우

 

Deadlock을 해결하는 방법

1. Prevent, avoid : 시스템이 deadlock 상황에 들어가지 않도록 미리 보장하는 방법

2. Recover : deadlock이 발생하도록 허용하고 발생 후 해결하는 방법

3. Ignore : deadlock이 발생하지 않을 것이라고 보고 무시하는 방법 (실제 deadlock 발생 확률이 낮기 때문)

 

Deadlock Prevention

Deadlock의 4가지 조건 중 하나라도 만족시키지 않도록 하는 방법

- Mutual Exclusion : non-sharable 자원을 갖도록 한다.  -> OS 구조상 불가능한 방법

- Hold and Wait : 프로세스가 자원을 확보할 때 모두 확보하도록 하자.(all or nothing) -> starvation 문제 발생

- No Preemption : Hold and Wait 방식과 유사하나 하나씩 확보를 해보고 모두 확보가 불가능한 경우 모든 자원을 내려놓도록 하는 방식.

- Circular Wait : 자원 유형의 전체 순서를 지정하고 각 프로세스가 순차적으로 자원을 요청하도록 한다. 즉, back edge가 만들어 질 수 없는 구조로 만드는 방식.

 

결론 : Prevention은 자원 활용성을 떨어트리는 방식이다.

 

Deadlock Avoidance 

Deadlock이 발생할 수 있는 경우를 비해서 가도록 하는 방식 -> 미리 Deadlock을 예측해야한다.

- 가장 간단하고 유용한 모델로 프로세스의 각 자원타입의 최대 자원 개수를 알아야 한다.

- deadlock-avoidance algorithm 은 circuler wait 조건이 만족하지 않도록 동적으로 자원 할당 상태를 예측해야한다.

- 자원 할당의 state는 가능 자원수, 할당된 자원 수 , 프로세스의 최대 필요 자원 수로 결정된다.

 

Safe State

자원을 할당했을 때 안전한 상태인지 판단한다. 종료 sequence가 존재한다면 Safe State로 판단.

 

시스템이 safe state인 경우 deadlock이 발생하지 않는다.

시스템이 safe state가 아닌 경우 deadlock 발생 가능성이 있는 것이다. -> 모든 프로세스가 최대 자원 개수를 모두 요청하는 경우

 

결론 : Avoidance는 시스템이 unsafe state에 절대 들어가지 않도록 보장해준다.

 

Avoidance Algorithm

- Single instance인 경우 -> Resource-allocation graph 사용

- Multiple instance인 경우 -> banker's algorithm 사용

 

Single instance per resource types

- claim edge : 사용할 자원을 나타내는 간선

- request edge : 프로세스가 사용을 위해 요청하는 상태를 나타내는 간선

- assignment edge : 자원이 할당되는 상태를 나타내는 간선

-> 사이클이 형성하지 않게 되는 경우에만 할당하여 간선의 상태변화

Multiple instances per resource types : Banker's Algorithm

- 각 프로세스는 자원 최대 사용량을 선언해야한다.

- 프로세스가 자원을 요청하는 경우 safe 하지 않으면 wait해야한다.

- 프로세스가 모든 자원을 확보한 경우 유한 시간내에 자원을 돌려줘야 한다.

 

Banker's Algorithm의 자료구조

n = 프로세스의 개수, m = 리소스 타입의 개수

Availabe[j] = k : Rj 리소스에 k개의 인스턴스가 사용가능하다.

Max[i,j] = k : Pi 프로세스가 Rj의 최대 k개의 인스턴스를 요청할 수 있다.

Allocation[i,j] = k : Pi가 현재 Rj의 k개 인스턴스를 할당 받았다.

Need[i,j] = k : Pi가 추가적으로 Rj의 k개 인스턴스를 필요로 한다.

-> Need[i,j] = Max[i,j] - Allocation[i,j]

 

Safety Algorithm

1. Work 는 사용가능한 자원, Finish는 프로세스 종료를 나타낸다.

    Work := Available

    Finish[i] = false -> 프로세스 i가 끝나지 않은 상태

 

2. 다음 두 조건에 만족하는 i를 찾는다.

    a. Finish[i] = false

    b. Needi <Work

    프로세스가 실행되어야 하고 필요한 개수가 사용가능 개수보다 적은 경우 3번 수행

    존재하지 않는 경우 4번 수행(더 이상 수행가능한 프로세스가 없는 경우)

 

3. 남은 자원을 할당해주어 프로세스가 완료되도록 한다.

    Finish[i] := true

    2번 과정으로 돌아가 반복하며 모든 프로세스에 대해 수행

 

4. 모든 i에 대해 Finish[i] = true 인 경우 sequence가 존재하므로 safe state임을 확인

 

safe 한 경우 -> Pi에게 자원을 할당

unsafe 한 경우 -> 이전의 resource-allocation state를 복구

Banker's Algorithm 예시

Deadlock Detection

Deadlock이 발생하도록 두고 발생할 때 해결하는 방식

- Detection algorithm

- Recovery scheme

 

Single Instance of Each Resource Type

- wait-for graph를 사용한다.

- cycle을 찾기 위해서는 O(n^2) 의 시간 복잡도를 갖는데 이를 줄이기 위해 프로세스 Vertex만 사용하여 프로세스간 wait 관계만 표기

리소스에 대한 vertex를 제거하여 사이클 탐색 시간을 줄이도록 한다.

Deadlock Detection Algorithm

safety algorithm과 유사하지만 미래 예측이 필요없기애 max 같은 자료구조를 사용하지 않는다.

 

Availabe : 사용가능한 자원의 수

Allocation : 현재 프로세스에게 할당된 자원의 수

Request : 프로세스가 요청하는 자원의 수

 

1. Work, Finish 변수 사용

    Work := Available

    For i = 1,2,...,n

        Finish[i] = false (Allocation<j> != 0 인 경우)

        Finish[i] = true  (나머지 경우) -> 자원할당을 받지 않은 프로세스는 사이클 대상이 될 수 없으므로 종료된 프로세스로 취급

 

2.  다음 조건을 만족하는 index i를 찾는다.

    a. Finish[i] = false

    b. Request<i> <= Work

    만족하지 않는 경우 4번 과정으로 진행

 

3. Work := Work + Allocation<i>  -> 프로세스를 완료하고 자원을 놓아줌

    Finish[i] := true

    2번으로 돌아가 2,3번 과정 반복 수행

 

4. Finish[i] = false 인 경우가 존재한다면 deadlock이 발생 (Finish[i] = false 인 경우 Pi 가 deadlock 된 상태를 의미)

Detection Algorithm 예시

알고리즘은 O(m*n^2)의 시간복잡도를 갖는다. (m은 리소스 타입, n은 프로세스)

 

Problem : detection algorithm은 언제마다 실행되어야 하는가?

- 모든 요청시 -> 오버헤드가 크다.

- 요청을 받아들일 수 없을 때 -> 빈도는 다소 줄어듦

- 주기적으로? -> deadlock 이 발생하고 바로 할 필요없다. 주기적으로 하자

 

Recovery from Deadlock : Process Termination

- Deadlock 된 프로세스를 모두 죽이자.

- Deadlock cycle이 사라질 때까지 프로세스를 하나씩 죽이자

- 어떤 순서로 프로세스를 죽일 것인가?

   a. 프로세스의 우선순위에 따라

   b. 프로세스가 얼마나 실행되었고 남은 실행 기간에 따라

   c. 프로세스가 사용한 자원 수에 따라

   d. 완료까지 필요한 자원의 수에 따라

   e. 몇개의 프로세스가 종료되어야 하는지에 따라 (최소한의 프로세스를 죽이는 방법)

   f. 프로세스의 interactive, batch 여부에 따라

 

Recovery from Deadlock : Resource Preemption

- 희생 프로세스를 고른다 -> 어떤 프로세스의 자원을 뺏을 것인가

- Rollback -> safe state로 돌린 후 프로세스를 그 상태에서 재시작한다.

- Starvation : 하나의 프로세스가 계속 희생되어 starvation 문제가 발생 할 수 있다.

 

Avoidance vs Detection

Avoidance

- 미래를 예측하기에 소극적으로 동작한다. -> worst case assumption

- deadlock이 발생하지 않음에도 자원을 주지 않아 자원의 낭비가 발생한다.

 

Detection

- 현재를 기준으로 판단한다. -> best case assumption (프로세스가 추가적인 자원을 요청할 것이라고 생각하지 않음)

 

 

'Development > OS(Operating System)' 카테고리의 다른 글

Virtual Memory(2)  (0) 2023.06.06
Virtual Memory(1)  (0) 2023.05.20
Process Synchronization(2)  (0) 2023.04.08
Computer System Overview2  (0) 2023.04.01
Process Synchronization(1)  (0) 2023.03.30

한번씩 이유없이 현실에 대한 생각에 잠기는 시간이 찾아온다.

 

여러가지 이유가 있을 수 있다.

 

지금은 현실에 비하여 과도한 의욕으로 인해 고뇌에 잠기는 시간이 찾아온 것 같다.

 

의욕인지 욕심인지도 알 수 없다.

 

열심히 무엇인가를 성취하고 이루고 싶지만 정작 현실의 부족한 나를 마주하며 행동조차 하지 않을 때 생각에 잠기는 듯하다.

 

생각을 비우려고 애쓰기만 하는 것은 시간 낭비라고 생각이 들기 시작한다.

 

스스로 소리치며 무엇인가를 행동하는 것이 가장 좋은 방법인 것 같다.

 

생각을 집어치우고 지금 당장 무엇인가를 해보자

 

생각만 하고 앉아있다면 시간을 버리고 나를 성장시킬 수 없음을 깨달았다.

 

무엇이든 좋으니 지금 할 수 있는 어떤 무엇인가를 행동하자

 

 

행동으로 시작하여 모든 것을 이루는 사람이 되어보자

'생각정리' 카테고리의 다른 글

사회적 시각으로 올바르게 보는 과학  (0) 2023.06.23

+ Recent posts