λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

πŸ–₯ CS

(30)
[운영체제] ν”„λ‘œμ„ΈμŠ€ λ³Έ κ²Œμ‹œκΈ€μ€ KOCW μ΄ν™”μ—¬μžλŒ€ν•™κ΅ 반효경 κ΅μˆ˜λ‹˜μ˜ κ°•μ˜λ₯Ό λ“£κ³  μ •λ¦¬ν•œ λ‚΄μš©μž…λ‹ˆλ‹€. κ²Œμ‹œκΈ€μ— ν¬ν•¨λ˜λŠ” 이미지 자료 λ˜ν•œ ν•΄λ‹Ή κ°•μ˜μ— ν¬ν•¨λœ κ°•μ˜ μžλ£Œμž…λ‹ˆλ‹€. ν”„λ‘œμ„ΈμŠ€λž€? ν”„λ‘œμ„ΈμŠ€λŠ” μ‹€ν–‰ 쀑인 ν”„λ‘œκ·Έλž¨μž…λ‹ˆλ‹€. PCB (Process Control Block) PCBλŠ” μš΄μ˜μ²΄μ œκ°€ 각 ν”„λ‘œμ„ΈμŠ€λ₯Ό κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄ ν”„λ‘œμ„ΈμŠ€λ‹Ή μœ μ§€ν•˜λŠ” μ •λ³΄μž…λ‹ˆλ‹€. μš΄μ˜μ²΄μ œλŠ” ν”„λ‘œμ„ΈμŠ€ λ‹Ή PCBλ₯Ό ν•˜λ‚˜μ”© 두고(컀널 μ˜μ—­μ— 생성) 이λ₯Ό μ΄μš©ν•΄ λΉ λ₯΄κ²Œ λ²ˆκ°ˆμ•„ μˆ˜ν–‰λ˜λŠ” ν”„λ‘œμ„ΈμŠ€μ˜ μ‹€ν–‰ μˆœμ„œλ₯Ό κ΄€λ¦¬ν•˜κ³ , ν”„λ‘œμ„ΈμŠ€μ— CPUλ₯Ό λΉ„λ‘―ν•œ μžμ›μ„ λ°°λΆ„ν•©λ‹ˆλ‹€. PCBμ—λŠ” μ–΄λ–€ 정보듀이 λ‹΄κΈΈκΉŒμš”? PCB의 ꡬ성은 μœ„μ˜ κ·Έλ¦Όκ³Ό κ°™μŠ΅λ‹ˆλ‹€. (1) OSκ°€ 관리상 μ‚¬μš©ν•˜λŠ” 정보 - Process ID(=PID): νŠΉμ • ν”„λ‘œμ„ΈμŠ€λ₯Ό μ‹λ³„ν•˜κΈ° μœ„ν•΄ λΆ€μ—¬ν•˜λŠ” κ³ μœ ν•œ ..
[Algorithm/Swift] 이진 탐색(Binary Search) μ•ˆλ…•ν•˜μ„Έμš” μ œμΈμž…λ‹ˆλ‹€ :) μ˜€λŠ˜μ€ 탐색 μ•Œκ³ λ¦¬μ¦˜ 쀑 이진 탐색(Binary Search)이 무엇인지 μ•Œμ•„λ³΄κ³  Swift μ½”λ“œλ‘œ κ΅¬ν˜„κΉŒμ§€ 해보렀고 ν•©λ‹ˆλ‹€. 이진 탐색 μ•Œκ³ λ¦¬μ¦˜μ˜ 경우 νƒμƒ‰μ˜ λ²”μœ„κ°€ μ•„μ£Ό 큰 μƒν™©μ—μ„œ 속도λ₯Ό λ‚΄μ„œ 탐색할 수 μžˆλŠ” λ°©λ²•μ΄λ‹ˆ 잘 정리해두면 μœ μš©ν•˜κ²Œ μ‚¬μš©ν•  수 μžˆμ„ 것 κ°™μŠ΅λ‹ˆλ‹€. λ°”λ‘œ μ‹œμž‘ν•΄λ³Όκ²Œμš”! 이진 νƒμƒ‰μ΄λž€? λ¨Όμ €, 이진 탐색이 μ™œ ν•„μš”ν• κΉŒμš”?? 리슀트 λ‚΄μ—μ„œ μ›ν•˜λŠ” 데이터λ₯Ό μ°ΎκΈ° μœ„ν•΄ κ°€μž₯ 기본적인 탐색 방법인 순차 탐색 방법과 λΉ„κ΅ν•˜λ©° 이진 탐색을 μ‚¬μš©ν•΄μ•Ό ν•˜λŠ” μ΄μœ μ— λŒ€ν•΄ μ•Œμ•„λ΄…μ‹œλ‹€. 순차 탐색 순차 νƒμƒ‰μ΄λž€ 리슀트 μ•ˆμ— μžˆλŠ” νŠΉμ •ν•œ 데이터λ₯Ό μ°ΎκΈ° μœ„ν•΄ μ•žμ—μ„œλΆ€ν„° 데이터λ₯Ό ν•˜λ‚˜μ”© μ°¨λ‘€λŒ€λ‘œ ν™•μΈν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€. 보톡 μ •λ ¬λ˜μ§€ μ•Šμ€ λ¦¬μŠ€νŠΈμ—μ„œ 데이터λ₯Ό μ°Ύμ•„μ•Ό ν•  λ•Œ μ‚¬μš©ν•˜κ²Œ..
[운영체제] ν”„λ‘œκ·Έλž¨μ˜ μ‹€ν–‰ λ³Έ κ²Œμ‹œκΈ€μ€ KOCW μ΄ν™”μ—¬μžλŒ€ν•™κ΅ 반효경 κ΅μˆ˜λ‹˜μ˜ κ°•μ˜λ₯Ό λ“£κ³  μ •λ¦¬ν•œ λ‚΄μš©μž…λ‹ˆλ‹€. κ²Œμ‹œκΈ€μ— ν¬ν•¨λ˜λŠ” 이미지 자료 λ˜ν•œ ν•΄λ‹Ή κ°•μ˜μ— ν¬ν•¨λœ κ°•μ˜ μžλ£Œμž…λ‹ˆλ‹€. ν”„λ‘œκ·Έλž¨μ˜ μ‹€ν–‰ - λ©”λͺ¨λ¦¬ load κ³Όμ • ν”„λ‘œκ·Έλž¨μ΄ μ–΄λ–»κ²Œ μ»΄ν“¨ν„°μ—μ„œ μ‹€ν–‰λ˜λŠ” 것인지 ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ 과정에 λŒ€ν•΄ μ •λ¦¬ν•΄λ΄…μ‹œλ‹€. 보톡 ν”„λ‘œκ·Έλž¨μ€ ν•˜λ“œλ””μŠ€ν¬(파일 μ‹œμŠ€ν…œ)에 μ‹€ν–‰νŒŒμΌ(exe) ν˜•νƒœλ‘œ μ €μž₯λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 이 μ‹€ν–‰νŒŒμΌμ„ μ‹€ν–‰μ‹œν‚€κ²Œ 되면, λ©”λͺ¨λ¦¬λ‘œ μ˜¬λΌκ°€μ„œ ν”„λ‘œμ„ΈμŠ€κ°€ λ˜μ–΄ μ‹€ν–‰λ©λ‹ˆλ‹€. 즉, ν”„λ‘œκ·Έλž¨ μ‹€ν–‰μ˜ 큰 κ΅¬μ‘°λŠ” Disk에 μžˆλŠ” μ‹€ν–‰ νŒŒμΌμ„ μ‹€ν–‰ν•˜λ©΄, 물리적인 λ©”λͺ¨λ¦¬μ— μ˜¬λΌκ°€μ„œ ν”„λ‘œμ„ΈμŠ€κ°€ λ˜μ–΄ ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰λ©λ‹ˆλ‹€. 이 λ•Œ, λ°”λ‘œ 물리적인 λ©”λͺ¨λ¦¬(Physical Memory)둜 μ˜¬λΌκ°€λŠ” 것이 μ•„λ‹ˆλΌ 가상 λ©”λͺ¨λ¦¬ 단계λ₯Ό 거치게 λ©λ‹ˆλ‹€. μ–΄λ–€..
[Algorithm/Swift] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€(Lv.2) - 무인도 μ—¬ν–‰ μ•ˆλ…•ν•˜μ„Έμš” μ œμΈμž…λ‹ˆλ‹€! ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€μ— 졜근 μΆ”κ°€λœ μ—°μŠ΅λ¬Έμ œ 쀑 ν•˜λ‚˜μΈ 무인도 μ—¬ν–‰μ΄λΌλŠ” 문제λ₯Ό ν’€μ–΄λ³΄μ•˜λŠ”λ°μš”, 문제 ν•΄κ²° 아이디어λ₯Ό μ½”λ“œλ‘œ κ΅¬ν˜„ν•˜λŠ” 것이 κ½€λ‚˜ μ–΄λ €μ› λ˜ λ¬Έμ œμ΄κΈ°λ„ ν•˜κ³ , Swift 풀이가 아직 μ—†λŠ” 것 κ°™μ•„μ„œ ν•œ 번 정리해보렀고 ν•©λ‹ˆλ‹€! 무인도에 μ™œ ꡳ이 여행을 κ°€λŠ”μ§€λŠ” λͺ¨λ₯΄κ² μ§€λ§Œ μ•”νŠΌ μ‹œμž‘ν•΄λ³Όκ²Œμš”..γ…Ž 문제 링크 ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ μ½”λ“œ μ€‘μ‹¬μ˜ 개발자 μ±„μš©. μŠ€νƒ 기반의 ν¬μ§€μ…˜ 맀칭. ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€μ˜ 개발자 λ§žμΆ€ν˜• ν”„λ‘œν•„μ„ λ“±λ‘ν•˜κ³ , λ‚˜μ™€ 기술 ꢁ합이 잘 λ§žλŠ” 기업듀을 맀칭 λ°›μœΌμ„Έμš”. programmers.co.kr 문제 μ„€λͺ… λ©”λ¦¬λŠ” 여름을 λ§žμ•„ λ¬΄μΈλ„λ‘œ 여행을 κ°€κΈ° μœ„ν•΄ 지도λ₯Ό 보고 μžˆμŠ΅λ‹ˆλ‹€. μ§€λ„μ—λŠ” 바닀와 무인도듀에 λŒ€ν•œ 정보가 ν‘œμ‹œλΌ μžˆμŠ΅λ‹ˆλ‹€. μ§€λ„λŠ” 1 x 1크기의 μ‚¬κ°ν˜•λ“€λ‘œ 이루어진 ..
[운영체제] I/O의 μˆ˜ν–‰ - μΈν„°λŸ½νŠΈ(Interrupt)와 μ‹œμŠ€ν…œ 콜(System Call) λ³Έ κ²Œμ‹œκΈ€μ€ KOCW μ΄ν™”μ—¬μžλŒ€ν•™κ΅ 반효경 κ΅μˆ˜λ‹˜μ˜ κ°•μ˜λ₯Ό λ“£κ³  μ •λ¦¬ν•œ λ‚΄μš©μž…λ‹ˆλ‹€. κ²Œμ‹œκΈ€μ— ν¬ν•¨λ˜λŠ” 이미지 자료 λ˜ν•œ ν•΄λ‹Ή κ°•μ˜μ— ν¬ν•¨λœ κ°•μ˜ μžλ£Œμž…λ‹ˆλ‹€. I/O의 μˆ˜ν–‰ λͺ¨λ“  I/O(μž…μΆœλ ₯) λͺ…령은 특ꢌ λͺ…λ Ήμ΄λ―€λ‘œ μ‚¬μš©μž ν”„λ‘œκ·Έλž¨μ€ 직접 I/O device에 μ ‘κ·Όν•  수 μ—†μŠ΅λ‹ˆλ‹€. κ·Έλ ‡λ‹€λ©΄ μ‚¬μš©μž ν”„λ‘œκ·Έλž¨μ€ μ–΄λ–»κ²Œ I/Oλ₯Ό μˆ˜ν–‰ν•˜κ²Œ λ κΉŒμš”??μ‚¬μš©μž ν”„λ‘œκ·Έλž¨μ€ μ‹œμŠ€ν…œ 콜(System Call)을 톡해 μš΄μ˜μ²΄μ œμ—κ²Œ I/O μš”μ²­μ„ ν•˜κ²Œ λ©λ‹ˆλ‹€.μ‹œμŠ€ν…œ μ½œμ„ 톡해 trap을 μ‚¬μš©ν•œ μΈν„°λŸ½νŠΈ(Interrupt)λ₯Ό κ±Έμ–΄ CPU μ œμ–΄κΆŒμ΄ μš΄μ˜μ²΄μ œμ—κ²Œ λ„˜μ–΄κ°ˆ 수 μžˆλ„λ‘ ν•˜λŠ” λ°©μ‹μœΌλ‘œ μš”μ²­ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. μΈν„°λŸ½νŠΈκ°€ λ“€μ–΄μ˜€λ©΄, CPUλŠ” μ˜¬λ°”λ₯Έ I/O μš”μ²­μΈμ§€ 확인 ν›„ I/O μš”μ²­μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€. μ‹œμŠ€ν…œ 콜 (System Ca..
[운영체제] 컴퓨터 μ‹œμŠ€ν…œ ꡬ쑰 λ³Έ κ²Œμ‹œκΈ€μ€ KOCW μ΄ν™”μ—¬μžλŒ€ν•™κ΅ 반효경 κ΅μˆ˜λ‹˜μ˜ κ°•μ˜λ₯Ό λ“£κ³  μ •λ¦¬ν•œ λ‚΄μš©μž…λ‹ˆλ‹€. κ²Œμ‹œκΈ€μ— ν¬ν•¨λ˜λŠ” 이미지 자료 λ˜ν•œ ν•΄λ‹Ή κ°•μ˜μ— ν¬ν•¨λœ κ°•μ˜ μžλ£Œμž…λ‹ˆλ‹€. 컴퓨터 μ‹œμŠ€ν…œ ꡬ쑰 컴퓨터 μ‹œμŠ€ν…œμ€ 크게 CPU, Memory, μ£Όλ³€μž₯치(ν•˜λ“œλ””μŠ€ν¬, μž…μΆœλ ₯ μž₯치)둜 κ΅¬μ„±λ˜κ³ , 이듀은 μ‹œμŠ€ν…œ λ²„μŠ€λ‘œ μ—°κ²°ν•©λ‹ˆλ‹€. λ¨Όμ € κ°„λž΅ν•˜κ²Œ μ„€λͺ…해보면, CPUλŠ” λͺ¨λ“  μž₯치의 λ™μž‘μ„ μ œμ–΄ν•˜κ³  λͺ…령을 μ‹€ν–‰ν•˜λŠ” μ€‘μ•™μ²˜λ¦¬μž₯치이며, λ©”λͺ¨λ¦¬λŠ” CPU의 μž‘μ—… κ³΅κ°„μž…λ‹ˆλ‹€. μ£Όλ³€μž₯μΉ˜λŠ” 큰 κ°œλ…μœΌλ‘œ λͺ¨λ‘ μž…μΆœλ ₯ μž₯치라고 λ³Ό 수 μžˆλŠ”λ°, μž…λ ₯ μž₯μΉ˜μ—λŠ” ν‚€λ³΄λ“œ, 마우슀 등이 있으며 좜λ ₯μž₯μΉ˜λŠ” λͺ¨λ‹ˆν„°, ν”„λ¦°ν„° 등이 μžˆμŠ΅λ‹ˆλ‹€. ν•˜λ“œλ””μŠ€ν¬λŠ” 보쑰기얡μž₯치둜 보톡 이야기 ν•˜μ§€λ§Œ, ν•˜λ“œλ””μŠ€ν¬μ˜ 데이터λ₯Ό λ©”λͺ¨λ¦¬λ‘œ 읽어듀이기도 ν•˜κ³ (μž…λ ₯ μž₯μΉ˜λ‘œμ„œμ˜ μ—­ν• ), 처리 ..
[Algorithm/Swift] 동적 κ³„νšλ²•(Dynamic Programming) μ•ˆλ…•ν•˜μ„Έμš” μ œμΈμž…λ‹ˆλ‹€! μ˜€λŠ˜μ€ μ•Œκ³ λ¦¬μ¦˜ κ°œλ… 쀑 동적 κ³„νšλ²•(Dynamic Programming)에 λŒ€ν•΄ 정리해보렀고 ν•©λ‹ˆλ‹€. 동적 κ³„νšλ²•μ΄ 무엇인지 정리해보고, 동적 κ³„νšλ²•μ˜ λŒ€ν‘œμ μΈ 예제인 문제λ₯Ό 톡해 μ μš©κΉŒμ§€ 해보도둝 ν• κ²Œμš”! 동적 κ³„νšλ²•(Dynamic Programming, DP) λ‹€μ΄λ‚˜λ―Ή ν”„λ‘œκ·Έλž˜λ°(μ€„μ—¬μ„œ DP)라고도 λΆˆλ¦¬λŠ” 동적 κ³„νšλ²•μ€ 큰 문제λ₯Ό μž‘κ²Œ λ‚˜λˆ„κ³ , 같은 문제라면 ν•œ λ²ˆμ”©λ§Œ ν’€μ–΄ 문제λ₯Ό 효율적으둜 ν•΄κ²°ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜ κΈ°λ²•μž…λ‹ˆλ‹€. 동적 κ³„νšλ²•μ—μ„œλŠ” λ©”λͺ¨μ΄μ œμ΄μ…˜(Memoization) 기법이 핡심이라고 ν•  수 μžˆλŠ”λ°μš”! λ©”λͺ¨μ΄μ œμ΄μ…˜ κΈ°λ²•μ΄λž€, ν•œ 번 κ΅¬ν•œ κ²°κ³Όλ₯Ό λ©”λͺ¨λ¦¬ 곡간에 μ €μž₯해두고 같은 식을 λ‹€μ‹œ ν˜ΈμΆœν•΄ μ €μž₯ν•œ κ²°κ³Όλ₯Ό κ·ΈλŒ€λ‘œ κ°€μ Έμ˜€λŠ” 기법을 μ˜λ―Έν•©λ‹ˆλ‹€. λ©”λͺ¨μ΄μ œμ΄μ…˜μ€ 값을 μ €μž₯ν•˜λŠ”..
[운영체제] μš΄μ˜μ²΄μ œλž€? μš΄μ˜μ²΄μ œλž€? 운영체제(OS, Operating System)λŠ” μ‚¬μš©μžκ°€ μ‘μš© ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ν•  수 μžˆλŠ” 기반 ν™˜κ²½μ„ μ œκ³΅ν•˜μ—¬ 컴퓨터λ₯Ό νŽΈλ¦¬ν•˜κ²Œ μ‚¬μš©ν•  수 μžˆλ„λ‘ 도와주고, ν•˜λ“œμ›¨μ–΄λ₯Ό 효율적으둜 μ‚¬μš©ν•  수 μžˆλ„λ‘ λ‹€μ–‘ν•œ κΈ°λŠ₯을 μ œκ³΅ν•˜λŠ” μ‹œμŠ€ν…œ μ†Œν”„νŠΈμ›¨μ–΄μž…λ‹ˆλ‹€. 컴퓨터 μ‹œμŠ€ν…œμ€ 크게 μ‚¬μš©μž, μ†Œν”„νŠΈμ›¨μ–΄, ν•˜λ“œμ›¨μ–΄λ‘œ κ΅¬μ„±λ˜λŠ”λ°, μš΄μ˜μ²΄μ œλŠ” ν•˜λ“œμ›¨μ–΄ λ°”λ‘œ μœ—λ‹¨μ— μ„€μΉ˜λ˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄λ‘œ μ‚¬μš©μžκ°€ ν•˜λ“œμ›¨μ–΄μ— μ ‘κ·Όν•  수 μžˆλŠ” μœ μΌν•œ μˆ˜λ‹¨μž…λ‹ˆλ‹€. κ·Έλ ‡κΈ° λ•Œλ¬Έμ— μš΄μ˜μ²΄μ œλŠ” ν•˜λ“œμ›¨μ–΄μ™€ 각쒅 μ†Œν”„νŠΈμ›¨μ–΄, 그리고 μ‚¬μš©μžλ₯Ό μ—°κ²°ν•΄μ£ΌλŠ” 계측이라고 ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 운영체제의 μ’…λ₯˜λ‘œλŠ” UNIX, MS-DOS, MS Windows 등이 μžˆμŠ΅λ‹ˆλ‹€. 운영체제의 λͺ©μ  1. 컴퓨터 μ‹œμŠ€ν…œμ˜ μžμ›μ„ 효율적으둜 관리 (νš¨μœ¨μ„±) 컴퓨터 μ‹œμŠ€ν…œμ˜ ..