개념충 필수코스 - 5

Youngmin Choi·2021년 9월 7일
0

ETC

목록 보기
2/7

1. 스크립트 언어와 컴파일 언어 나열 후 차이점을 설명하여라.

  • 스크립트 언어 : Javascript, Phython, Ruby...
  • 컴파일 언어 : C, C++, C#, Java
  • 차이점 : 컴파일러의 존재 여부!
  • 스크립트 언어의 경우 실행될 때 바로 해석하므로 코드 변경시 실행 할 때마다 결과가 바뀌게 되는 반면, 컴파일 언어의 경우 컴파일러를 통해서 한 번 컴파일 된 후에는 코드 수정 후 재컴파일 하기 전까지는 같은 결과를 나타낸다.

2. 프로세스와 스레드의 차이를 설명하여라.

  • 프로세스 : 실행중인 프로그램을 나타낸다. 이는 CPU가 실행되고 있는 프로세스에 대해서 메모리 자원을 안정되게 분배해줘야 하며 운영체제의 성능에 따라 결정된다.
  • 스레드 : 하나의 프로세스 내에서 할당 받은 자원을 공유하며 실행되는 독립적인 작업단위이다. 즉, 스레드는 각자의 스택 메모리 영역을 가지고 있으며 동일한 프로세스 내의 다른 스레드들과 전역 메모리를 공유한다. 따라서 CPU로부터 새로운 자원을 할당 받지 않아도 되기 때문에 프로세스보다 실행 속도가 빠르다는 장점이 있다.

3. 스레드를 생성하는 방법과 스레드의 장/단점을 설명하여라.

  • 생성방법 : Runnable(인터페이스)로 선언되어 있는 클래스를 상속받거나 Thread 클래스를 상속받아 run() 메서드를 구현해주면 된다.
  • 장 점 : 빠른 프로세스 생성, 적은 메모리 사용, 쉬운 정보 공유
  • 단 점 : 교착 상태에 빠질 수 있다.

4. 동기화란 무엇이며 어떠한 경우에 사용하는가?

  • 다중 스레드에서 하나의 자료에 접근할 때 사용한다. (static으로 선언되어 있거나 배열에 접근하는 경우!)
  • 예를 들어 은행계좌에 있는 돈에 대하여 동시 출금 요청[접근]이 가능하다면, 한 쪽에서 출금 처리가 완료되기 전에 다른 쪽에서 출금 요청이 일어났을 때 출금이 될 수 있기 때문에 반드시 동기화 처리를 해서 작업이 일어나는 중에는 다른 쪽에서의 접근을 막아주어야 한다.
profile
Always, Continually, In all circumstance

0개의 댓글