URI (Uniform Resource Identifier)

  • νŠΉμ • λ¦¬μ†ŒμŠ€λ₯Ό μ‹λ³„ν•˜λŠ” ν†΅ν•© μžμ› μ‹λ³„μžλ₯Ό 의미
  • μ›Ή κΈ°μˆ μ—μ„œ μ‚¬μš©ν•˜λŠ” 논리적 λ˜λŠ” 물리적 λ¦¬μ†ŒμŠ€λ₯Ό μ‹λ³„ν•˜λŠ” κ³ μœ ν•œ λ¬Έμžμ—΄ μ‹œν€€μŠ€

→ Uniform : λ¦¬μ†ŒμŠ€λ₯Ό μ‹λ³„ν•˜λŠ” ν†΅μΌλœ 방식

 Resource : URI둜 식별이 κ°€λŠ₯ν•œ λͺ¨λ“  μ’…λ₯˜μ˜ μžμ›(μ›Ή λΈŒλΌμš°μ € 파일 및 κ·Έ μ΄μ™Έμ˜ λ¦¬μ†ŒμŠ€ 포함)

 Identifier : λ‹€λ₯Έ ν•­λͺ©κ³Ό κ΅¬λΆ„ν•˜κΈ° μœ„ν•΄ ν•„μš”ν•œ 정보 

 

  • Scheme : λ¦¬μ†ŒμŠ€μ— μ ‘κ·Όν•˜λŠ”λ° μ‚¬μš©ν•  ν”„λ‘œν† μ½œ. μ›Ήμ—μ„œλŠ” http λ˜λŠ” httpsλ₯Ό μ‚¬μš©
  • Host : μ ‘κ·Όν•  λŒ€μƒ(μ„œλ²„)의 호슀트λͺ…
  • Path : μ ‘κ·Όν•  λŒ€μƒ(μ„œλ²„)의 κ²½λ‘œμ— λŒ€ν•œ 상세정보 (URN)
    → URN은 λ¦¬μ†ŒμŠ€μ˜ μœ„μΉ˜, ν”„λ‘œν† μ½œ, 호슀트 λ“±κ³ΌλŠ” 상관없이 각 μžμ›μ— 이름을 λΆ€μ—¬ν•œ 것.
         λ¬Όλ¦¬μ μΈ μœ„μΉ˜μ™€ 상관없이 μ›Ή λ¬Έμ„œ 자체λ₯Ό λ‚˜νƒ€λ‚Έλ‹€.

 


 

URL (Uniform Resource Locator)

  • ν”νžˆ μ›Ή μ£Όμ†ŒλΌκ³  ν•˜λ©°, λ„€νŠΈμ›Œν¬μƒμ—μ„œ 톡합 μžμ›(λ¦¬μ†ŒμŠ€)의 “μœ„μΉ˜”λ₯Ό λ‚˜νƒ€λ‚΄κΈ° μœ„ν•œ κ·œμ•½.
    즉, μžμ› μ‹λ³„μžμ™€ μœ„μΉ˜λ₯Ό λ™μ‹œμ— λ³΄μ—¬μ€Œ
  • νŠΉμ • μ›Ή νŽ˜μ΄μ§€μ˜ μ£Όμ†Œμ— μ ‘μ†ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ›Ή μ‚¬μ΄νŠΈμ˜ μ£Όμ†ŒλΏλ§Œ μ•„λ‹ˆλΌ ν”„λ‘œν† μ½œ(https, http, sftp, smp λ“±)을
    ν•¨κ»˜ μ•Œμ•„μ•Ό 접속이 κ°€λŠ₯
    ν•œλ°, 이듀을 λͺ¨λ‘ λ‚˜νƒ€λ‚΄λŠ” 것이 URL
  • URI의 일쒅
  • ν”„λ‘œν† μ½œκ³Ό κ²°ν•©ν•œ ν˜•νƒœ
    → μ–΄λ–»κ²Œ μœ„μΉ˜λ₯Ό μ°Ύκ³  도달할 수 μžˆλŠ”μ§€ ν¬ν•¨ν•΄μ•Όν•˜λ―€λ‘œ ν”„λ‘œν† μ½œ + 이름(λ˜λŠ” 번호)의 ν˜•νƒœμ—¬μ•Ό ν•œλ‹€.

 

URL ꡬ쑰

γ€‹ν”„λ‘œν† μ½œ

https, httpλŠ” μ›ΉλΈŒλΌμš°μ €μ™€ μ›Ήμ„œλ²„ μ‚¬μ΄μ—μ„œ μ›Ήλ¬Έμ„œ 및 ꡬ성 μžμ›μ„ μ •μ†‘ν•˜κΈ° μœ„ν•œ ν”„λ‘œν† μ½œ

λ§Žμ€ μ›Ήμ‚¬μ΄νŠΈλ“€μ΄ httpsλ₯Ό κΈ°λ³Έ ν”„λ‘œν† μ½œλ‘œ μ‚¬μš©ν•˜λ©° http보닀 λ³΄μ•ˆμ΄ κ°•ν™”λœ 버전

 

》도메인

URLμ—μ„œ μ›Ήμ„œλ²„μ˜ μœ„μΉ˜λ₯Ό μ§€μ •ν•˜λŠ” λΆ€λΆ„

 

γ€‹ν¬νŠΈλ²ˆν˜Έ

μ›Ήμ„œλ²„μ—μ„œ μžμ›μ„ μ ‘κ·Όν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” 게이트 번호

 

γ€‹μ„œλΈŒλ””λ ‰ν† λ¦¬

ν•΄λ‹Ή νŽ˜μ΄μ§€κ°€ μœ„μΉ˜ν•œ 파일 μ‹œμŠ€ν…œμ˜ κ²½λ‘œλ‘œμ„œ μ›Ή νŽ˜μ΄μ§€ λ˜λŠ”νŒŒμΌμ„ κ΅¬μ„±ν•˜λŠ” 데 μ‚¬μš©λ˜λŠ” 디렉토리λ₯Ό λ‚˜νƒ€λƒ„
μ„œλΈŒ 디렉토리λ₯Ό 톡해 νŽ˜μ΄μ§€κ°€ ν˜„μž¬ μ–΄λŠ νŽ˜μ΄μ§€μ˜ ν•˜μœ„λ‘œ λ“€μ–΄κ°€ μžˆλŠ”μ§€ 확인 κ°€λŠ₯

 

 

동적  URL, 정적 URL

 

》동적 URL

 ‘?’μ΄λ‚˜ ‘&’κ³Ό 같은 λ§€κ°œλ³€μˆ˜ κ°’μ˜ μ‘°ν•©μœΌλ‘œ λ§Œλ“€μ–΄μ§€λŠ” URL ꡬ쑰

예) http://example.com/?doc=cart/item.php&it_id=198577

 

》정적 URL

λ§€κ°œλ³€μˆ˜κ°€ ν¬ν•¨λ˜μ–΄ μžˆμ§€ μ•ŠμœΌλ©° μ„œλΈŒ λ””λ ‰ν† λ¦¬μ˜ ꡬ쑰 및 ν•΄λ‹Ή νŽ˜μ΄μ§€μ˜ μ£Όμš” λ‚΄μš©μ„ νŒŒμ•…ν•  수 μžˆλŠ” URL ꡬ쑰

예) https://www.example.com/product/shirts

 

 

 

더보기

'CS > λ„€νŠΈμ›Œν¬' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[λ„€νŠΈμ›Œν¬] HTTP λ©”μ†Œλ“œ(GET / POST)  (0) 2023.01.31

ν”„λ‘œν† μ½œ

  • 컴퓨터 λ‚΄λΆ€μ—μ„œ λ˜λŠ” 컴퓨터 μ‚¬μ΄μ—μ„œ λ°μ΄ν„°μ˜ κ΅ν™˜ 방식을 μ •μ˜ν•˜λŠ” κ·œμΉ™μ²΄κ³„
  • κΈ°κΈ° κ°„ 톡신은 κ΅ν™˜λ˜λŠ” 데이터 ν˜•μ‹μ— λŒ€ν•΄ μƒν˜Έν•©μ˜λ₯Ό μš”κ΅¬ν•˜λ©°, 이런 ν˜•μ‹μ„ μ •μ˜ν•˜λŠ” κ·œμΉ™μ˜ 집합이 ν”„λ‘œν† μ½œ

 

HTTP ν”„λ‘œν† μ½œ

  • 인터넷 μƒμ—μ„œ 데이터λ₯Ό μ£Όκ³ λ°›κΈ° μœ„ν•œ μ„œλ²„/ν΄λΌμ΄μ–ΈνŠΈ λͺ¨λΈμ„ λ”°λ₯΄λŠ” ν”„λ‘œν† μ½œ
  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 레벨의 ν”„λ‘œν† μ½œλ‘œ, TCP/IP μœ„μ—μ„œ μž‘λ™
  • μ–΄λ–€ μ’…λ₯˜μ˜ 데이터든 전솑할 수 μžˆλ„λ‘ μ„€κ³„λ˜μ–΄μžˆμŒ

 

HTTP ν”„λ‘œν† μ½œμ˜ μž‘λ™λ°©μ‹

μ„œλ²„/ν΄λΌμ΄μ–ΈνŠΈ λͺ¨λΈμ„ λ”°λ₯΄κ³ , ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μš”μ²­(request)을 보내면 μ„œλ²„λŠ” 응닡(response)ν•œλ‹€.

 


 

HTTP λ©”μ„œλ“œ 

  • HTTPλŠ” μš”μ²­ λ©”μ„œλ“œλ₯Ό μ •μ˜ν•˜μ—¬, μ£Όμ–΄μ§„ λ¦¬μ†ŒμŠ€μ— μˆ˜ν–‰ν•˜κΈΈ μ›ν•˜λŠ” 행동을 λ‚˜νƒ€λƒ„
  • 각각의 λ©”μ„œλ“œλŠ” μ„œλ‘œ λ‹€λ₯Έ 의미λ₯Ό κ΅¬ν˜„ν•˜μ§€λ§Œ, 일뢀 κΈ°λŠ₯은 λ©”μ„œλ“œ 집합간에 μ„œλ‘œ κ³΅μœ ν•˜κΈ°λ„ 함
  • HTTP Method : REST(Representational State Transfer)λ₯Ό μ§€ν‚€λ©΄μ„œ ν–‰μœ„λ₯Ό μ „λ‹¬ν•˜λŠ” 방법
    2000년도에 둜이 필딩이 μ›Ήμ˜ μž₯점을 μ΅œλŒ€ν•œ ν™œμš©ν•  수 μžˆλŠ” μ•„ν‚€ν…μ²˜λ‘œμ¨ RESTλ₯Ό λ°œν‘œ
    → 지원(Resource) : URI
         ν–‰μœ„(Verb) : HTTP Method
         ν‘œν˜„(Representations)

 

HTTP λ©”μ„œλ“œ μ’…λ₯˜

  1. GET(쑰회) : μ„œλ²„λ‘œλΆ€ν„° 데이터λ₯Ό 취득
  2. POST(등둝) : μ„œλ²„μ— 데이터λ₯Ό μΆ”κ°€, μž‘μ„±
  3. PUT(μˆ˜μ •) : μ„œλ²„μ˜ 데이터λ₯Ό κ°±μ‹ , μž‘μ„±
  4. PATCH : λ¦¬μ†ŒμŠ€μ˜ 일뢀뢄을 μˆ˜μ •
  5. DELETE(μ‚­μ œ) : μ„œλ²„μ˜ 데이터λ₯Ό μ‚­μ œ
  6. HEAD : μ„œλ²„μ˜ λ¦¬μ†ŒμŠ€μ˜ 헀더(메타 λ°μ΄ν„°μ˜ 취득)
  7. OPTIONS : λ¦¬μ†ŒμŠ€κ°€ μ§€μ›ν•˜κ³  μžˆλŠ” λ©”μ†Œλ“œμ˜ 취득
  8. CONNECT : ν”„λ‘μ‹œ λ™μž‘μ˜ 터널 접속을 λ³€κ²½

 

 

 

 GET

ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ„œλ²„λ‘œ μ–΄λ– ν•œ λ¦¬μ†ŒμŠ€λ‘œ λΆ€ν„° μ •보λ₯Ό μš”μ²­ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ” λ©”μ„œλ“œ

데이터λ₯Ό μ½κ±°λ‚˜(Read), κ²€μƒ‰(Retrieve)ν•  λ•Œμ— μ‚¬μš©

URL μ£Όμ†Œ λμ— νŒŒλΌλ―Έν„°λ‘œ ν¬ν•¨λ˜μ–΄ μ „솑되며, μ΄ λΆ€λΆ„을 μΏΌλ¦¬ μŠ€νŠΈλ§ (query string) μ΄λΌκ³  λΆ€λ₯Έλ‹€.
URL λμ— " ? " λ₯Ό λΆ™μ΄κ³  κ·Έλ‹€μŒ λ³€μˆ˜λͺ…1=κ°’1&λ³€μˆ˜λͺ…2=κ°’2... ν˜•μ‹μœΌλ‘œ μ΄μ–΄ λΆ™μ΄λ©΄ λœλ‹€.
예) www.example.com/show?name1=홍길동&name2=κΉ€λ‘˜λ¦¬
→ μ„œλ²„μ—μ„œλŠ” name1 κ³Ό name2 λΌλŠ” νŒŒλΌλ―Έν„° λͺ…μœΌλ‘œ 각각 홍길동과 κΉ€λ‘˜λ¦¬μ˜ νŒŒλΌλ―Έν„° 값을 전달 받을 수 μžˆλ‹€.

 

 

 

POST

λ¦¬μ†ŒμŠ€λ₯Ό 생성/μ—…λ°μ΄νŠΈν•˜κΈ° μœ„ν•΄ μ„œλ²„μ— 데이터λ₯Ό λ³΄λ‚΄λŠ” 데 μ‚¬μš©λ˜λŠ” λ©”μ„œλ“œ

GETκ³Ό λ‹¬λ¦¬ μ „솑해야될 λ°μ΄ν„°λ₯Ό HTTP λ©”μ„Έμ§€μ˜ Body에 λ‹΄μ•„μ„œ μ „솑

HTTP λ©”μ„Έμ§€μ˜ BodyλŠ” 길이의 μ œν•œμ—†μ΄ 데이터λ₯Ό 전솑할 수 있(GETκ³Ό 달리 λŒ€μš©λŸ‰ 데이터λ₯Ό 전솑할 수 μžˆλŠ” 이유)

 

 

 

GET κ³Ό POST

  GET POST
μΊμ‹œ β­• ❌
λΈŒλΌμš°μ € 기둝 β­• ❌
뢁마크 μΆ”κ°€ β­• ❌
데이터 κΈΈμ΄μ œν•œ β­• ❌
HTTP 응닡 μ½”λ“œ 200 OK 201 Created
μ–Έμ œ 주둜 μ‚¬μš©? λ¦¬μ†ŒμŠ€ μš”μ²­ λ¦¬μ†ŒμŠ€ 생성
λ¦¬μ†ŒμŠ€ 전달방식 쿼리슀트링 HTTP Body
Idempotent β­• ❌

 

Idempotent (= 멱등법칙, λ©±λ“±μ„±)

  • 연산을 μ—¬λŸ¬λ²ˆ μ μš©ν•˜λ”λΌλ„ κ²°κ³Όκ°€ 달라지지 μ•ŠλŠ” μ„±μ§ˆ
  • GET 이 idempotent μ„€κ³„λ˜μ—ˆλ‹€λŠ” 것은 GET으둜 μ„œλ²„μ—κ²Œ λ™μΌν•œ μš”μ²­μ„ μ—¬λŸ¬λ²ˆ μ „μ†‘ν•˜λ”λΌλ„
    λ™μΌν•œ 응닡이 λŒμ•„μ™€μ•Όν•œλ‹€λŠ” 것을 μ˜λ―Έν•¨. λ”°λΌμ„œ, GET은 주둜 μ‘°νšŒν• λ•Œ μ‚¬μš©
  • λ°˜λŒ€λ‘œ POSTλŠ” Non-Idempotentν•˜κΈ° λ•Œλ¬Έμ— μ„œλ²„μ— λ™μΌν•œ μš”μ²­μ„ μ—¬λŸ¬λ²ˆ 전솑해도 응닡은 항상 λ‹€λ₯Ό 수 μžˆλ‹€.
    λ”°λΌμ„œ, POSTλŠ” μ„œλ²„μ˜ μƒνƒœλ‚˜ 데이터λ₯Ό λ³€κ²½μ‹œν‚¬ λ•Œ μ‚¬μš©. 

 

 

 

 

 

 

더보기

μ°Έκ³ ) https://brilliantdevelop.tistory.com/32

 

HTTP μ •μ˜ 및 λ™μž‘ 방식

ν”„λ‘œν† μ½œ ν”„λ‘œν† μ½œμ€ 컴퓨터 λ‚΄λΆ€μ—μ„œ, λ˜λŠ” 컴퓨터 μ‚¬μ΄μ—μ„œ λ°μ΄ν„°μ˜ κ΅ν™˜ 방식을 μ •μ˜ν•˜λŠ” κ·œμΉ™ μ²΄κ³„μž…λ‹ˆλ‹€. κΈ°κΈ° κ°„ 톡신은 κ΅ν™˜λ˜λŠ” λ°μ΄ν„°μ˜ ν˜•μ‹μ— λŒ€ν•΄ μƒν˜Έ ν•©μ˜λ₯Ό μš”κ΅¬ν•©λ‹ˆλ‹€. 이런

brilliantdevelop.tistory.com

 

μ°Έκ³ ) https://www.ascentkorea.com/what-is-url/

 

URLμ΄λž€ 무엇인가? - μ–΄μ„ΌνŠΈ 코리아

URLμ΄λž€ 무엇인지에 λŒ€ν•΄ μ•Œμ•„λ³΄κ³  URL ꡬ쑰 및 SEO μΉœν™”μ μΈ μ„€μ • 방법에 λŒ€ν•œ λ‚΄μš©μ„ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. URL을 SEO μΉœν™”μ μœΌλ‘œ 단좕할 수 μžˆλŠ” 방법에 λŒ€ν•΄ μ•Œμ•„λ³΄μ„Έμš”.

www.ascentkorea.com

 

μ°Έκ³ ) https://noahlogs.tistory.com/35

 

[λ„€νŠΈμ›Œν¬] get κ³Ό post 의 차이

GET κ³Ό POST λŠ” HTTP λ©”μ„œλ“œλ‘œ ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ„œλ²„λ‘œ 무언가λ₯Ό μš”μ²­ν•  λ•Œ μ‚¬μš©ν•œλ‹€. 2019/06/01 - [IT 정보 둜그캣/CS] - [λ„€νŠΈμ›Œν¬] http λž€ [λ„€νŠΈμ›Œν¬] http λž€ 기본적으둜 λ„€νŠΈμ›Œν¬ 톡신을 ν•  λ•Œ 처음 μ ‘ν•˜

noahlogs.tistory.com

 

μ°Έκ³ ) https://zwzwzw123-daily-daily.tistory.com/123

 

[CS지식 - κ°œλ°œμƒμ‹] HTTP λ©”μ†Œλ“œ

1. HTTP λ©”μ†Œλ“œ HTTPλŠ” μš”μ²­ λ©”μ„œλ“œλ₯Ό μ •μ˜ν•˜μ—¬, μ£Όμ–΄μ§„ λ¦¬μ†ŒμŠ€μ— μˆ˜ν–‰ν•˜κΈΈ μ›ν•˜λŠ” 행동을 λ‚˜νƒ€λƒ„ 각각의 λ©”μ„œλ“œλŠ” μ„œλ‘œ λ‹€λ₯Έ 의미λ₯Ό κ΅¬ν˜„ν•˜μ§€λ§Œ, 일뢀 κΈ°λŠ₯은 λ©”μ„œλ“œ 집합간에 μ„œλ‘œ κ³΅μœ ν•˜κΈ°λ„ 함

zwzwzw123-daily-daily.tistory.com

 

μ°Έκ³ ) https://developer.mozilla.org/ko/docs/Web/HTTP/Status

 

HTTP μƒνƒœ μ½”λ“œ - HTTP | MDN

HTTP 응닡 μƒνƒœ μ½”λ“œλŠ” νŠΉμ • HTTP μš”μ²­μ΄ μ„±κ³΅μ μœΌλ‘œ μ™„λ£Œλ˜μ—ˆλŠ”μ§€ μ•Œλ €μ€λ‹ˆλ‹€. 응닡은 5개의 그룹으둜 λ‚˜λˆ„μ–΄μ§‘λ‹ˆλ‹€: 정보λ₯Ό μ œκ³΅ν•˜λŠ” 응닡, 성곡적인 응닡, λ¦¬λ‹€μ΄λ ‰νŠΈ, ν΄λΌμ΄μ–ΈνŠΈ μ—λŸ¬, 그리고

developer.mozilla.org

 

'CS > λ„€νŠΈμ›Œν¬' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[λ„€νŠΈμ›Œν¬] URLκ³Ό URI  (0) 2023.02.01

1. 경쟁 μƒνƒœ Race Condition

μ—¬λŸ¬ ν”„λ‘œμ„ΈμŠ€λ“€(Execution-box)이 곡유 μžμ›(Storage-box)에 λ™μ‹œμ— μ ‘κ·Όν•˜λ €κ³  ν•˜λŠ” μƒν™©μ—μ„œ
μ–΄λ–€ ν”„λ‘œμ„ΈμŠ€κ°€
λ§ˆμ§€λ§‰μœΌλ‘œ 데이터에 μ ‘κ·Όν–ˆλŠ”μ§€μ— 따라 λ°μ΄ν„°μ˜ μƒνƒœκ°€ λ‹¬λΌμ§ˆ 수 μžˆλŠ” μƒνƒœ.

 

즉, λ°μ΄ν„°μ˜ 일관성(λ°μ΄ν„°μ˜ 뢈일치)을 보μž₯ν•  수 μ—†μ–΄μ§€λŠ” 문제 λ°œμƒ.

→ 이같은 경쟁 μƒνƒœμ˜ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ ν”„λ‘œμ„ΈμŠ€λ“€μ€ 동기화(Synchronized)λ˜μ–΄μ•Ό ν•œλ‹€.

 

 

 

 

2. 동기화 Synchronization

μ—¬λŸ¬ ν”„λ‘œμ„ΈμŠ€κ°€ κ³΅μœ ν•˜λŠ” μžμ›μ˜ 일관성을 μœ μ§€ν•˜λŠ” 것

일관성을 μœ μ§€ν•˜κ³  κ²½μŸμƒνƒœλ₯Ό 막기 μœ„ν•΄ ν˜‘λ ₯ ν”„λ‘œμ„ΈμŠ€ κ°„μ˜ μ‹€ν–‰μˆœμ„œλ₯Ό μ •ν•΄μ£ΌλŠ” λ§€μ»€λ‹ˆμ¦˜.

 

 

 

3. μž„κ³„ μ˜μ—­ Critical Section

μ½”λ“œ μƒμ—μ„œ Race condition이 λ°œμƒν•  수 μžˆλŠ” νŠΉμ • 뢀뢄을 λ§ν•œλ‹€.

즉, 곡유 데이터λ₯Ό μ ‘κ·Όν•˜λŠ” μ½”λ“œ 뢀뢄을 λ§ν•œλ‹€.

κ³΅λ™μœΌλ‘œ 이용되기 λ•Œλ¬Έμ— ν”„λ‘œμ„ΈμŠ€λ“€μ˜ μ ‘κ·Ό μˆœμ„œλ₯Ό μ •ν•˜μ—¬ μ˜ˆμƒμΉ˜ λͺ»ν•œ λ¬Έμ œκ°€ λ°œμƒν•˜μ§€ μ•Šλ„λ‘ 해야함.

 

 

3-1. μž„κ³„ μ˜μ—­ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ 쑰건

β‘  μƒν˜Έλ°°μ œ (Mutual Exclusion)

  • ν•œ ν”„λ‘œμ„ΈμŠ€κ°€ μž„κ³„ μ˜μ—­μ„ μž‘μ—… 쀑이라면, λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€λ“€μ€ ν•΄λ‹Ή μž„κ³„μ˜μ—­μ— μ§„μž…ν•˜λ©΄ μ•ˆλœλ‹€.

β‘‘ μ§„ν–‰ (Progress)

  • μ–΄λ– ν•œ ν”„λ‘œμ„ΈμŠ€λ„ μž„κ³„ μ˜μ—­μ„ μˆ˜ν–‰ν•˜κ³  μžˆμ§€ μ•Šμ„ λ•Œ, μž„κ³„ μ˜μ—­μ— μ ‘κ·Όν•˜κ³ μž ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€κ°€ μžˆλ‹€λ©΄
    ν•΄λ‹Ή ν”„λ‘œμ„ΈμŠ€λ₯Ό μž„κ³„ μ˜μ—­μ— λ“€μ–΄κ°ˆ 수 있게 ν•΄μ•Όν•œλ‹€.
    즉, 아무도 μž„κ³„ μ˜μ—­μ— μ—†λŠ”λ° ν”„λ‘œμ„ΈμŠ€κ°€ μž„κ³„ μ˜μ—­μ— λͺ» λ“€μ–΄κ°€λ©΄ μ•ˆλœλ‹€λŠ” 뜻.

β‘’ ν•œμ • λŒ€κΈ° (Bounded Waiting)

  • μ–΄λ–€ ν”„λ‘œμ„ΈμŠ€λ„ λ¬΄ν•œλŒ€κΈ°ν•˜μ§€ μ•Šμ•„μ•Όν•¨

 

더보기

μ°Έκ³ ) https://code-lab1.tistory.com/50?category=1213006 

 

[운영체제] 동기화 문제(Synchronization problem), 경쟁 μƒνƒœ(Race Condition), μž„κ³„ μ˜μ—­(Critical Section)

동기화 문제 (Synchronization Problem) λ™μ‹œμ— 곡유 μžμ›μ— μ ‘κ·Όν•˜λŠ” 것은 λ°μ΄ν„°μ˜ 일관성을 ν•΄μΉ  수 μžˆλ‹€. ν”„λ‘œμ„ΈμŠ€λ“€μ˜ μ‹€ν–‰ μˆœμ„œλ₯Ό μ •ν•˜μ—¬ 곡유 μžμ›μ˜ 일관성을 보μž₯ν•˜λŠ” 것을 동기화(Synchronization

code-lab1.tistory.com

 

μ°Έκ³ ) https://rebro.kr/176

 

[운영체제(OS)] 6. ν”„λ‘œμ„ΈμŠ€ 동기화(Process Synchronization)

[λͺ©μ°¨] 1. Race Condition 2. Critical Section 3. Synchronization Algorithms 4. Synchronization Hardware 5. Mutex Locks 6. Semaphores 7. Classical Problems of Synchronization 8. Monitor μ°Έκ³ ) - https://parksb.github.io/article/10.html - KOCW κ³΅κ°œκ°•μ˜

rebro.kr

 

μ°Έκ³ ) https://hyunse0.tistory.com/393

 

[OS] μž„κ³„κ΅¬μ—­, μž„κ³„κ΅¬μ—­ ν•΄κ²°

곡유 μžμ› shared resource μ—¬λŸ¬ ν”„λ‘œμ„ΈμŠ€κ°€ κ³΅λ™μœΌλ‘œ μ΄μš©ν•˜λŠ” λ³€μˆ˜, λ©”λͺ¨λ¦¬, 파일 λ“± κ³΅λ™μœΌλ‘œ 이용되기 λ•Œλ¬Έμ— ν”„λ‘œμ„ΈμŠ€λ“€μ˜ μ ‘κ·Ό μˆœμ„œλ₯Ό μ •ν•˜μ—¬ μ˜ˆμƒμΉ˜ λͺ»ν•œ λ¬Έμ œκ°€ λ°œμƒν•˜μ§€ μ•Šλ„λ‘ 해야함 κ²½

hyunse0.tistory.com

 

1. ν”„λ‘œκ·Έλž¨ (Program)

  • μ–΄λ–€ μž‘μ—…μ„ ν•˜κΈ° μœ„ν•΄ ν•΄μ•Όν•  일듀을 μˆœμ„œλŒ€λ‘œ λ‚˜μ—΄ν•œ 것
  • μ»΄ν“¨ν„°μ—μ„œ μ–΄λ–€ μž‘μ—…μ„ μœ„ν•΄ μ‹€ν–‰ν•  수 μžˆλŠ” '정적인 μƒνƒœ'의 파일

 

2. ν”„λ‘œμ„ΈμŠ€ (Process)

  • ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰λ˜λ©΄ ν”„λ‘œμ„ΈμŠ€ μΈμŠ€ν„΄μŠ€κ°€ μƒμ„±λœλ‹€. 즉, ν”„λ‘œκ·Έλž¨ 싀행에 ν•„μš”ν•œ λ‚΄μš©μ΄ λ©”λͺ¨λ¦¬(Ram)에 μ μž¬λ˜λŠ” 것.
  • μš΄μ˜μ²΄μ œκ°€ λ©”λͺ¨λ¦¬ λ“±μ˜ ν•„μš”ν•œ μžμ›μ„ ν• λ‹Ήν•΄μ€€ '싀행쀑인 ν”„λ‘œκ·Έλž¨'
  • ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰λ˜μ„œ λŒμ•„κ°€κ³  μžˆλŠ” μƒνƒœ, μ»΄ν“¨ν„°μ—μ„œ μ—°μ†μ μœΌλ‘œ μ‹€ν–‰λ˜κ³  μžˆλŠ” '동적인 μƒνƒœ'의 ν”„λ‘œκ·Έλž¨
  • μž‘μ—…κ΄€λ¦¬μ°½μ— ν‘œμ‹œλ˜μ–΄μžˆλŠ” 것듀이 ν”„λ‘œμ„ΈμŠ€μž„
  • ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€κ°€ λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ˜ μžμ›μ— μ ‘κ·Όν•˜λ €λ©΄ ν”„λ‘œμ„ΈμŠ€ κ°„μ˜ 톡신 ν•„μš”
  • 각 ν”„λ‘œμ„ΈμŠ€λŠ” λ³„λ„μ˜ μ£Όμ†Œκ³΅κ°„μ—μ„œ μ‹€ν–‰λ˜κ³ , ν”„λ‘œμ„ΈμŠ€λΌλ¦¬λŠ” μžμ›μ„ κ³΅μœ ν•˜μ§€ μ•ŠμŒ

 

2-1. ν”„λ‘œμ„ΈμŠ€μ˜ 생λͺ…μ£ΌκΈ°

  • new : ν”„λ‘œμ„ΈμŠ€κ°€ μƒμ„±λ˜λŠ” μƒνƒœ
  • ready : ν”„λ‘œμ„ΈμŠ€κ°€ CPU에 ν• λ‹Ήλ˜μ–΄, 처리되기λ₯Ό κΈ°λ‹€λ¦¬λŠ” μƒνƒœ
  • running: ν”„λ‘œμ„ΈμŠ€κ°€ CPU에 ν• λ‹Ήλ˜μ–΄, λͺ…령어듀이 μ‹€ν–‰ λ˜λŠ” μƒνƒœ
  • waiting: μ–΄λ–€ 이벀트의 λ°œμƒμœΌλ‘œ 인해 ν”„λ‘œμ„ΈμŠ€κ°€ κΈ°λ‹€λ¦¬λŠ” μƒνƒœ
  • terminated: ν”„λ‘œμ„ΈμŠ€κ°€ μ’…λ£Œλ˜λŠ” μƒνƒœ

ν”„λ‘œμ„ΈμŠ€μ˜ 생λͺ…μ£ΌκΈ°

 

3. μŠ€λ ˆλ“œ (Thread)

  • ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œ μ‹€ν–‰λ˜λŠ” νλ¦„μ˜ λ‹¨μœ„
  • ν”„λ‘œμ„ΈμŠ€ ν•˜λ‚˜μ— μžμ›μ„ κ³΅μœ ν•˜λ©΄μ„œ 일련의 과정을 μ—¬λŸ¬ 개 λ™μ‹œμ— μ‹€ν–‰ μ‹œ 킬 수 μžˆλŠ” 것을 말함
  • 할당받은 μžμ›μ„ μ΄μš©ν•˜λŠ” μ‹€ν–‰μ˜ λ‹¨μœ„
  • μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ ν•˜λ‚˜κ°€ ν”„λ‘œμ„ΈμŠ€μ΄κ³ ,  κ·Έ μ•ˆμ—μ„œμ˜ λΆ„κΈ° μ²˜λ¦¬κ°€ μŠ€λ ˆλ“œκ°€ λ˜λŠ” μ…ˆ

 

4. ν”„λ‘œμ„ΈμŠ€μ™€ μŠ€λ ˆλ“œ

ν”„λ‘œμ„ΈμŠ€λŠ” 싀행될 λ•Œ μš΄μ˜μ²΄μ œλ‘œλΆ€ν„° 각각 λ…λ¦½λœ λ©”λͺ¨λ¦¬ μ˜μ—­μ„ ν• λ‹Ήλ°›λŠ”λ‹€.

μŠ€λ ˆλ“œλŠ” ν•œ ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œ λ™μž‘λ˜λŠ” νλ¦„μœΌλ‘œ, stack μ˜μ—­λ§Œ λ³„λ„λ‘œ ν• λ‹Ήλ°›κ³ ,

λΆ€λͺ¨ ν”„λ‘œμ„ΈμŠ€μ˜ Code, Stack, Data, Heap μ˜μ—­μ€ κ³΅μœ ν•œλ‹€.

즉, ν”„λ‘œμ„ΈμŠ€ λ‚΄μ—μ„œ μžμ‹ μŠ€λ ˆλ“œλ“€μ€ μ„œλ‘œ μ£Όμ†Œ κ³΅κ°„μ΄λ‚˜ μžμ›λ“€μ„ κ³΅μœ ν•˜λ©΄μ„œ 싀행될 수 μžˆλ‹€.

 

 

4. λ©€ν‹°ν”„λ‘œμ„ΈμŠ€(Multi Process)와 λ©€ν‹°μŠ€λ ˆλ“œ(Multi Thread)

  λ©€ν‹° ν”„λ‘œμ„ΈμŠ€ λ©€ν‹° μŠ€λ ˆλ“œ
κ°œλ… - 두 개 이상 λ‹€μˆ˜μ˜ ν”„λ‘œμ„Έμ„œ(CPU)κ°€ ν˜‘λ ₯적으둜
ν•˜λ‚˜ μ΄μƒμ˜ μž‘μ—…μ„ λ™μ‹œμ²˜λ¦¬ν•˜λŠ” 것(병렬)
- ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€μ— μ—¬λŸ¬ μŠ€λ ˆλ“œλ‘œ μžμ›μ„ κ³΅μœ ν•˜λ©°
μž‘μ—…μ„ λ‚˜λˆ„μ–΄ μˆ˜ν–‰ν•˜λŠ” 것
μž₯점 - λ…λ¦½λœ ꡬ쑰둜 μ•ˆμ •μ„± λ†’μŒ
(ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€κ°€ 죽더라도 λ‹€λ₯Έ ν”„λ‘œμ„ΈμŠ€μ— 영ν–₯을
μ£Όμ§€ μ•ŠμŒ, μž‘μ—…μ†λ„κ°€ λŠλ €μ§€λŠ” μ •λ„μ˜ μ†ν•΄λ§Œ λ°œμƒ)
- λ©€ν‹° ν”„λ‘œμ„ΈμŠ€λ³΄λ‹€ 적은 λ©”λͺ¨λ¦¬ 곡간을 μ°¨μ§€
- context Switching이 λΉ λ₯Έ μž₯점
단점 - λ©€ν‹°μŠ€λ ˆλ“œλ³΄λ‹€ λ§Žμ€ λ©”λͺ¨λ¦¬κ³΅κ°„κ³Ό CPU μ‹œκ°„μ„ μ°¨μ§€ - 동기화 문제
- ν•˜λ‚˜μ˜ μŠ€λ ˆλ“œ μž₯μ• λ‘œ 전체 μŠ€λ ˆλ“œκ°€ μ’…λ£Œλ  수 있음
곡톡점 λ™μ‹œμ— μ—¬λŸ¬ μž‘μ—…μ„ μˆ˜ν–‰

 

 

더보기

1. κ·Έλž˜ν”„ 탐색 μ•Œκ³ λ¦¬μ¦˜ : DFS / BFS
- νƒμƒ‰(Search)은 λ§Žμ€ μ–‘μ˜ λ°μ΄ν„° μ€‘μ—μ„œ μ›ν•˜λŠ” λ°μ΄ν„°λ₯Ό μ°ΎλŠ” κ³Όμ •
- DFS와 BFSλŠ” λŒ€ν‘œμ μΈ κ·Έλž˜ν”„ νƒμƒ‰ μ•Œκ³ λ¦¬μ¦˜ 

좜처 :μ—”μ§€λ‹ˆμ–΄λŒ€ν•œλ―Όκ΅­ / [자료ꡬ쑰 μ•Œκ³ λ¦¬μ¦˜] Graph 검색 DFS, BFS κ΅¬ν˜„ in Java



2. DFS(Depth-First Search, κΉŠμ΄μš°μ„  탐색)
- κ·Έλž˜ν”„μ—μ„œ κΉŠμ€ 뢀뢄을 μš°μ„ μ μœΌλ‘œ νƒμƒ‰ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜
- Stack 자료ꡬ쑰(ν›„μž…μ„ μΆœλ°©μ‹) ν˜Ήμ€ μž¬κ·€ν•¨μˆ˜λ₯Ό 이용

2-1. DFS λ™μž‘κ³Όμ •
β‘  νƒμƒ‰ μ‹œμž‘ λ…Έλ“œλ₯Ό μŠ€νƒμ— μ‚½μž…ν•˜κ³  λ°©λ¬Έ μ²˜λ¦¬
β‘‘ μŠ€νƒμ˜ μ΅œμƒλ‹¨ λ…Έλ“œμ— λ°©λ¬Έν•˜μ§€ μ•Šμ€ μΈμ ‘ν•œ λ…Έλ“œκ°€ ν•˜λ‚˜λΌλ„ μžˆμœΌλ©΄ κ·Έ λ…Έλ“œλ₯Ό μŠ€νƒμ— λ„£κ³  λ°©λ¬Έ μ²˜λ¦¬ν•œλ‹€.
    λ°©λ¬Έν•˜μ§€ μ•Šμ€ μΈμ ‘ λ…Έλ“œκ°€ μ—†μœΌλ©΄ μŠ€νƒμ—μ„œ μ΅œμƒλ‹¨ λ…Έλ“œλ₯Ό κΊΌλ‚Έλ‹€
β‘’ λ” μ΄μƒ μœ„ κ³Όμ •을 μˆ˜ν–‰ν•  μˆ˜ μ—†μ„ λ•ŒκΉŒμ§€ λ°˜λ³΅

 



3. BFS(λ„ˆλΉ„ μš°μ„  탐색)
- κ·Έλž˜ν”„μ—μ„œ κ°€κΉŒμš΄ λ…Έλ“œλΆ€ν„° μš°μ„ μ μœΌλ‘œ νƒμƒ‰ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜
- Queue자료ꡬ쑰(μ„ μž…μ„ μΆœλ°©μ‹)λ₯Ό 이용

3-1. BFS λ™μž‘κ³Όμ •
β‘  νƒμƒ‰ μ‹œμž‘ λ…Έλ“œλ₯Ό νμ— μ‚½μž…ν•˜κ³  λ°©λ¬Έ μ²˜λ¦¬
β‘‘ νμ—μ„œ λ…Έλ“œλ₯Ό κΊΌλ‚Έ λ’€μ— ν•΄λ‹Ή λ…Έλ“œμ˜ μΈμ ‘ λ…Έλ“œ μ€‘μ—λŠ” λ°©λ¬Έν•˜μ§€ μ•Šμ€ λ…Έλ“œλ₯Ό λͺ¨λ‘ νμ— μ‚½μž…ν•˜κ³  λ°©λ¬Έ μ²˜λ¦¬
β‘’ λ” μ΄μƒ μœ„ κ³Όμ •을 μˆ˜ν–‰ν•  μˆ˜ μ—†μ„ λ•ŒκΉŒμ§€ λ°˜λ³΅

 

 

더보기

+ Recent posts