Post

24/04/19 데일리 미션

  1. 스레드(Thread, 쓰레드)
    • 답안 스레드가 어떤 것인지 잘 이해하려면, 아무래도 많은 내용을 다루어야 가능할 것이다. 일단 최대한 간단하게만 써보고, 깊은 내용은 내가 블로그에 별도로 정리하자. 참고:https://inpa.tistory.com/entry/👩‍💻-프로세스-⚔️-쓰레드-차이 아주 유명한 블로그를 참고했다. 어제 운영체제에 대한 내용을 작성할 때, 커널 공간의 커널에서는 프로세스에 대한 관리를 맡는다고 했다. 다음으로, 프로그램이 메모리에 적재되고 실행이 된 상태에는 프로세스라고 부른다고 했다. 근데, 이보다 더 작은 단위로 스레드라는 게 있다. 두 가지의 정의는 다음과 같다. | 프로세스 | 스레드 | | —————————————— | —————————————————- | | 운영체제로부터 자원을 할당받은 작업의 단위 | 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위 | 표현이 어려운 것 같이 느껴지지만, 정리해보자. 프로그램, 예를 들어 카카오톡 같은 것을 실행하면 그 때 메모리에 적재되면서 코드가 실행되며 프로세스가 생성된다. 이 때, 이 카카오톡 프로세스가 운영체제로 부터 cpu 와 메모리 등의 자원을 할당 받는다. 작업관리자를 켜보자. 스크린샷 2024-04-19 122542.png 이렇게 프로세스가 cpu 를 얼마나 사용했고, 메모리를 얼마나 사용했는지 확인할 수 있다! 이때, 프로세스는 하나 이상의 스레드를 갖게 되며 프로세스에서 이루어지는 작업을 처리하는 실행 순서나 단위로 이해하면 좋을 것 같다.
  2. 멀티스레드(Multi Thread, 멀티쓰레드)
    • 답안 멀티 스레드는 멀티 프로세스와 함께 프로그램에 대한 처리 방식을 다룰 때 사용한다. 말 그대로, 멀티 스레드는 스레드를 여러 개 사용해서 프로세스의 작업을 효율적으로 처리하기 위한 방식이다. 조금 더 깊은 내용은 (스레드와 프로세스의 처리 방식 및 스케줄링 등)시간을 할애해서 다른 포스트로 작성해보자.
  3. 도메인(Domain)
    • 답안 간단한 정의는, 인터넷에 연결된 컴퓨터를 사람이 쉽게 기억하고 입력할 수 있게 문자로 만든 인터넷 주소라고 할 수 있다. ⇒ 예를 들어, https://naver.com 에서 “naver.com” 을 생각하면 쉽다. 조금 더 자세히 나눠보면, https:// ⇒ 는 프로토콜에 해당한다. 크게 http 와 https 가 존재한다. 아래 프로토콜 부분에 조금 더 정리해보자. 그렇다면, www.naver.com 은 naver.com 과 같은 것인가?? 라고 하면 아니다! 둘은 다른 도메인이지만, 네이버 측에서 둘 다 같은 사이트로 리다이렉션되게 만든 것일 뿐. www. 는 관용 표현 같은 것.
  4. DNS(Domain Name System)
    • 답안 위에서 도메인이 사람의 편의를 위해서 만든 것이라고 했는데, 컴퓨터에게는 숫자로 된 주소가 더욱 편할 것이다. 아마 익숙한 이름일 텐데, IP 주소가 바로 컴퓨터가 사용하는 주소다. 서버들이 고유한 주소를 갖게 되며, 우리는 이것을 도메인을 통해 보다 쉽게 접속하는 것이다. https://youtu.be/2ZUxoi7YNgs?si=HtlR0yr4DwtfzU8a 영상을 보면 이해가 쉬울 것이다. 우리는 웹 사이트에 접속할 때, 도메인을 통해서 접속을 한다. 근데, 기계는 IP주소를 통해서 구분을 한다고 했다. 이때, 우리가 입력한 도메인을 IP 주소로 바꿔 주는 체계가 DNS 인 것이다! 이 내용이 나무위키에 생각보다 상세하게 적혀있다. 참고하면 좋을듯!
  5. 프로토콜(Protocol)
    • 답안 프로토콜은 전자기기 들이 원활한 통신을 할 때 필요한 그 규약을 말한다. 위에서 언급한 IP 주소의 IP 가 바로 Internet Protocol 의 약자다. IP도 IPv4, IPv6 두 가지가 존재하며 자세한 통신 방식이나 규칙은 너무 복잡하니 생략..
  6. HTTP, HTTPS
    • 답안 HTTP 와 HTTPS 두 가지 모두 Protocol 이다. HyperText Transfer Protocol 이라고 하며, HTML 이 Hypertext markup language 니까! HTML 문서를 전송하기 위한 프로토콜이다. 이때, GET 이나 POST 등의 방식이 있다. 프로토콜은 Request 와 Response 로 구성되어 있으며, 클라이언트가 요청(Request)을 보내면 서버가 응답(Response)하는 구조다. HTTP 와 HTTPS 의 차이는 암호화 여부다.

      하지만, DNS 에서 보내는 최종 IP주소로 향하는 것은 여전히 암호화 되지 않는다.

  7. 동기 방식(Sync.) vs. 비동기 방식(Async.)
    • 답안 위 두 방식은, 데이터를 주고 받는 방식에 대한 용어다.
      1. 동기(Sync) 쉽게 말해, 웹 페이지를 새로고침해서 데이터를 불러오는 방식을 떠올리면 좋다. 네이버 메일의 예시가 그렇다고 한다. 직접 들어가보니, 메일함을 이동할 때마다 메일함 부분에서 새로고침이 일어나는 것을 확인했다. 또한, 동기 방식은 요청을 보냈으면 답변을 받는 것이 바로 이어지는 방식이다.

        1
        2
        
        따라서, 동작의 흐름이 보다 명료하다는 장점이 있다.
        반면에, 새로고침하는 영역이 커지기 때문에(전체 페이지를 다시 불러옴) 비효율적일 수 있다.
        
      2. 비동기(Sync) 그와 반대로, 비동기는 새로고침하지 않아도 데이터를 불러올 수 있다. 마찬가지로 네이버 카페에서 댓글을 달면, 새로고침 하지 않아도 내가 작성한 댓글이 바로 나타난다. 또한, 비동기는 요청을 보내도 바로 답변을 받는 방식이 아니다. 따라서, 코드로 동작의 흐름을 구성할 때 파악하기 어려울 수 있다. ⇒ 요청을 보낸 순서와 무관하게 답변을 받을 수도 있다. 반면, 필요한 부분만 갱신해서 가져오는 것은 효율적이라는 장점이 있다. 추가로, 새로고침이 없기 때문에 사용자 경험 측면에서 큰 장점!

  8. AJAX(Async JavaScript and XML)
    • 답안 AJAX는 비동기 방식의 대표적인 예시다. 이름처럼, 자바스크립트로 비동기 통신을 하고 XML 이나 HTML, JSON 등 다양한 형식으로 데이터를 주고 받을 수 있다. 간단한 원리는 다음과 같다.
      1. 웹 브라우저에서 사용자의 요청이 발생하면, XMLHttpRequest 객체를 생성한다.
      2. 이를 JS를 통해서 서버에 비동기로 요청을 보내고 서버에서는 이에 HTML, XML 이나 JSON 으로 답변을 보낸다.
      3. 서버로 부터 받은 답을 JS 가 처리하고(필요한 부분만 불러오는 동작) 웹 브라우저가 이를 보여준다.
This post is licensed under CC BY 4.0 by the author.