티스토리 뷰

첫 프로젝트 마무리와 발표

일주일간 진행된 첫 프로젝트를 마무리하고 같은 반 사람들과 모여 발표하는 시간을 가졌다. 다른 조들의 결과물들을 보니 참신한 컨센들도 많이 있었고, 생각지도 못한 여러 배울점도 많았다. 

 

튜터님이 가장 많이 조언해주신 부분은 수정과 삭제 기능을 구현할 때 db에 저장된 id값을 이용해보라고 한 것이었다. 대부분의 조에서 게시글에 번호를 매기는 방식을 사용하였는데, 이미 할당된 고유의 id값이 있으니 그것을 활용하는 것이 좋다는 것이다.

 

그것 외에도 가장 크게 느낀 것은 하루 빨리 git을 활용해보고 싶다는 것이었다. 이미 사용해서 프로젝트를 수행한 팀들도 있었고 아닌 팀들(우리팀 포함)도 많았지만 다들 git을 사용하는 것이 얼마나 중요한지를 느낀 것 같다. 또, 다음 프로젝트 때는 타임라인을 주기적으로 작성하여 좀 더 계획적인 프로젝트를 진행해 보고싶다고 느꼈다.

 

프로세스, 스레드, 비동기 특강(박민수 튜터님)

프로세스

  • 메모리라는 CPU의 탁자에 올려져 실행되고 있는 프로그램의 인스턴스(=붕어빵 틀로 찍어낸 붕어빵들)
  • 운영체제로부터 시스템 자원을 할당받는 작업의 단위
  • 각각은 독립된 메모리를 할당 받음
  • 프로세스 주소 공간의 네 가지 구성 Code/Data/Stack/Heap → 나중에 더 공부해보면 좋은 부분

 

스레드

  • 프로세스 내에서 자원을 이용하는 여러 실행 흐름의 단위로 프로세스마다 최소 1개의 스레드가 있음
  • 스레드는 프로세스 내의 Code, Data, Heap을 공유하면서, Stack만 따로 할당 받음

 

멀티 프로세스

  • 프로그램 하나를 실행시키기 위한 여러 task들을 각 프로세스가 하나씩 처리하게 하는 것
  • 장점: 어떤 프로세스에 문제가 발생했을 때 그 프로세스의 자식 프로세스 외에는 안전함
  • 단점: 문맥 교환(Context Switching)*에서의 오버헤드 발생, 프로세스 간 변수 공유가 되지 않아 어렵고 복잡한 프로세스 간 통신 기법(IPC, Inter Process Comunication)이 필요함

 

멀티 스레드

  • 하나의 프로그램을 여러 개의 스레드로 구성하고 각 스레드가 하나의 작업을 처리하도록 하는 것
  • 장점: 프로세스에 비해 메모리 공간과 시스템 자원 소모가 적음, 공유된 메모리 영역이 있어 통신 방법이 간단함, 문맥 교환에서의 문제가 적음
  • 단점: 여러 다른 스레드가 공유가는 메모리 때문에 자원 공유 동기화 문제가 발생, 하나의 스레드만 문제가 생겨도 전체 프로세스에 문제가 생김

 

블로킹 vs 논블로킹 / 동기 vs 비동기

필수개념

  • 제어권: 자신의 코드를 실행할 권리, 제어권이 있으면 자신의 코드를 끝까지 실행한 후 자신을 호출한 함수에게 돌려줌
  • 동시성: 함수 A와 함수 B가 동시에 진행되는 것(처럼 보이는 것) (특정 함수 A가 다른 함수 B의 결과값에 의존하는지)

블로킹 vs 논블로킹(제어권의 관점에서 바라본 개념)

  • 블로킹: 함수 A가 함수 B를 호출한 뒤(제어권 이동), 함수 B의 리턴값이 올 때까지 기다린 후 진행되는 것(리턴값과 제어권 반환)
  • 논블로킹: 함수 A가 함수 B를 호출한 뒤(제어권 이동 후 바로 반환), 함수 B의 작업 완료 여부와 상관 없이 진행되는 것

동기 vs 비동기(시간의 관점에서 바라본 개념)

  • 동기: 함수 A와 함수 B를 호출할 때, 함수 A가 함수 B의 리턴값을 계속 확인하면서 신경 쓰는것
  • 비동기: 함수 A와 함수 B를 호출할 때, 함수 A가 함수 B의 작업 완료 여부는 신경 쓰지 않는 것

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함