말감둜그

ν¬λž˜ν”„ν†€ μ •κΈ€ WEEK08 DAY64 - PintOS Project1 λ°œν‘œ / 8μ£Όμ°¨ 발제 λ³Έλ¬Έ

Krafton jungle

ν¬λž˜ν”„ν†€ μ •κΈ€ WEEK08 DAY64 - PintOS Project1 λ°œν‘œ / 8μ£Όμ°¨ 발제

habbn 2024. 3. 12. 22:46
728x90
πŸ“†2024.3.11

1. pintOS Project1 λ°œν‘œ
2. ν‚€μ›Œλ“œ 곡뢀

 

 

였늘 PintOS Project 1 : Alarm Clockκ³Ό Prioirty Scheduling λ°œν‘œν–ˆλ‹€.

νŒ€μ›λ“€κ³Ό 파트λ₯Ό λ‚˜λˆ μ„œ λ°œν‘œλ₯Ό ν–ˆλŠ”λ° κ·Έ 쀑 λ‚˜λŠ” μš°μ„ μˆœμœ„ μŠ€μΌ€μ€„λ§μ—μ„œ 선점, sema, condition variable 파트 λ§‘μ•˜λ‹€.

ν•œ νŒ€λ‹Ή λ°œν‘œ μ‹œκ°„μ€ 7λΆ„ 정도 주어지기 λ•Œλ¬Έμ— λ§Žμ€ μ‹œκ°„μ΄ μ•„λ‹ˆλ―€λ‘œ κ΅¬ν˜„ν•˜λ©΄μ„œ μ–΄λ €μ› λ˜ λΆ€λΆ„ μ–΄λ–»κ²Œ ν’€μ–΄λ‚˜κ°”λŠ”μ§€λ₯Ό μ€‘μ μ μœΌλ‘œ λ°œν‘œν–ˆλ‹€. λ‚˜λŠ” 특히 condition variable μ—μ„œ λΉ„κ΅ν•¨μˆ˜ 뢀뢄을 주둜 μ–˜κΈ°ν–ˆλ‹€.

 

λ°œν‘œκ°€ λλ‚˜κ³  8μ£Όμ°¨ 발제λ₯Ό ν–ˆλŠ”λ° μ§€κΈˆκΉŒμ§€ project 1은 μ»€λ„μ˜ μΌλΆ€λ‘œμ„œ μ‹œμŠ€ν…œμ— μ€‘μš”ν•œ 뢀뢄에 μ ‘κ·Όν•  수 μžˆλŠ” νŠΉκΆŒμ„ 가지고 μ‹€ν–‰ν–ˆμ—ˆλ‹€λ©΄ 이번 project2λŠ” μœ μ € λͺ¨λ“œλ‘œμ„œ νŠΉκΆŒμ„ κ°€μ§ˆ 수 μ—†μ–΄ μ‹œμŠ€ν…œ μ½œμ„ 톡해 컀널이 μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•΄μ£ΌλŠ” μœ μ € ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•˜κ²Œ 될 것라고 ν–ˆλ‹€.

 

그리고 λ°±μŠΉν˜„ μ½”μΉ˜λ‹˜κ»˜μ„œ 말씀해주신 것듀 쀑

"차이λ₯Ό μ΄ν•΄ν•˜λŠ” 것" 을 μ–˜κΈ°ν•΄μ£Όμ‹œλ©΄μ„œ avrνŠΈλ¦¬μ™€ rb트리의 차이λ₯Ό 말할 수 μžˆλŠ” μ‚¬λžŒμ΄ μžˆλŠ”κ°€λ₯Ό μ§ˆλ¬Έν•˜μ…¨μ—ˆλ‹€.

이 λ‘˜μ˜ μ°¨μ΄λŠ” avrνŠΈλ¦¬λŠ” κ· ν˜•μ„ μ‘°μ •ν•˜λŠ” 과정이 rootκΉŒμ§€ μ΄λ£¨μ–΄μ§€λ©΄μ„œ 전체λ₯Ό λ‹€ μ‘°μ •ν•΄μ•Όλœλ‹€λ©΄,

rbνŠΈλ¦¬λŠ” κ· ν˜•μ„ μ‘°μ •ν•˜λŠ” 과정이 λΆ€λͺ¨ λ‹¨μ—μ„œ λλ‚˜κΈ° λ•Œλ¬Έμ— μ•ˆμ •μ μ΄λΌκ³  ν•œλ‹€.

 

또 "legacy μ½”λ“œ ν™œμš©" 을 μ–˜κΈ°ν•˜μ‹œλ©΄μ„œ list.c 에 μžˆλŠ” list legacy ν•¨μˆ˜λ“€μ„ ν™œμš©ν•˜λΌκ³  ν–ˆλ‹€. 그리고 μš°λ¦¬λŠ” 잘 ν™œμš©ν•˜κ³  μžˆμ—ˆλ‹€ !

λͺ¨λ“  것을 λ‹€ μ•Œ ν•„μš” μ—†λ‹€. 

λ˜ν•œ 많이 μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” / μ‹€ν–‰μ‹œκ°„μ΄ 적은 ν•¨μˆ˜λ₯Ό ꡳ이 μ΅œμ ν™”μ‹œν‚€κΈ° μœ„ν•΄ μ‹œκ°„μ„ 버리지 μ•Šκ³  micro optimization을 ν•˜λŠ”κ²Œ μ’‹λ‹€κ³  ν•œλ‹€.

 

 

ν‚€μ›Œλ“œ

 

 

32 bit OS vs 64 bit OS

운영 체제(OS)μ—μ„œ μ‚¬μš©λ˜λŠ” ν”„λ‘œμ„Έμ„œ μœ ν˜•μ€ CPU λ ˆμ§€μŠ€ν„°μ—μ„œ μ•‘μ„ΈμŠ€ν•  수 μžˆλŠ” λ©”λͺ¨λ¦¬ 양을 μ•Œλ €μ€€λ‹€. 32λΉ„νŠΈ 운영 μ²΄μ œλž€? 32λΉ„νŠΈμ˜ 데이터λ₯Ό 전솑할 수 μžˆλŠ” μš©λŸ‰μ„ λ³΄μœ ν•˜λŠ” CPU μ•„ν‚€ν…μ²˜ 유

habbn-unitystudy.tistory.com

 

 

User Stack(μ‚¬μš©μž μŠ€νƒ)

운영 체제의 κ΄€μ μ—μ„œ λ³Ό λ•Œ, User Stack (μ‚¬μš©μž μŠ€νƒ)은 맀우 μ€‘μš”ν•œ κ°œλ…μ΄λ‹€. μ‚¬μš©μž μŠ€νƒμ€ ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ 쀑 λ°œμƒν•˜λŠ” λ‹€μ–‘ν•œ μž‘μ—…λ“€μ„ κ΄€λ¦¬ν•˜κΈ° μœ„ν•œ λ©”λͺ¨λ¦¬ ꡬ쑰둜, ν”„λ‘œμ„ΈμŠ€μ˜ μ‹€ν–‰ μƒνƒœλ₯Ό

habbn-unitystudy.tistory.com

 

 

λ°±μ€€ 1676 νŒ©ν† λ¦¬μ–Ό 0의 개수

 

n!μ—μ„œ λ’€μ—μ„œλΆ€ν„° 처음 0이 μ•„λ‹Œ μˆ«μžκ°€ λ‚˜μ˜¬ λ•ŒκΉŒμ§€ 0의 개수λ₯Ό κ΅¬ν•˜λŠ” λ¬Έμ œλ‹€.

μ²˜μŒμ— 문제λ₯Ό μžμ„Ένžˆ 읽어보지 λͺ»ν•˜κ³  κ·Έλƒ₯ 0의 개수λ₯Ό κ΅¬ν–ˆλ‹€κ°€ ν‹€λ Έμ–΄μ„œ λ‹€μ‹œ 문제λ₯Ό 읽고 κ΅¬ν˜„ν•˜μ˜€λ‹€.

def fac(n):
    if n == 0:
        return 1
    if n == 1:
        return 1
    return n * fac(n-1)

n = int(input())
temp = list(str(fac(n)))
cnt = 0

for i in range(len(temp)-1,-1,-1):
    if temp[i] == '0':
        cnt +=1
    else:
        break

print(cnt) 
728x90