๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ง๊ฐ๋กœ๊ทธ

ํฌ๋ž˜ํ”„ํ†ค ์ •๊ธ€ 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