일단 씻고 나가자

23.02.16 본문

Study/닥치는 대로 주워 담기

23.02.16

일단 씻고 나가자 2023. 3. 13. 15:37

2023. 02. 16 목요일
 
- CPU의 구성 3요소와 레지스터의 종류? 각각의 설명?
: CPU – 연산장치(ALU), 제어장치, 레지스터
레지스터 – 범용 레지스터, 특수 목적 레지스터
 
* 연산 장치 – 산술, 논리 연산을 시행.
* 제어 장치 – 명령어를 순서대로 실행할 수 있도록 제어.
  명령어를 해석하고, 결과에 따라 기억 장치, 연산 장치, 입출력 장치로 보냄.
* 레지스터 – 고속 기억 장치.
범용 레지스터 – 연산에 필요한 데이터나 연산 결과를 임시로 저장.
특수 목적 레지스터 – 특별한 용도로 사용하는 레지스터.
 
+) 중요한 특수 목적 레지스터
프로그램 카운터 (PC) - 다음 수행할 명령어 주소 저장.
메모리 주소 레지스터(MAR) - 연산을 수행할 주기억장치 주소 저장.
메모리 버퍼 레지스터(MBR) - 주기억장치에서 읽어올 / 저장할 데이터 임시 저장.
명령어 레지스터(IR) - 현재 실행 중인 명령어 저장.
누산기(AC) - 연산 결과 임시 저장.
 
 
- 명령어 세트, 명령어 사이클이란?
: 명령어 세트 - CPU가 실행할 명령어의 집합.
연산 코드(Operation Code, 실행할 연산) + 피연산자(Operand, 필요한 데이터 or 저장 위치)로 이루어짐.
 
명령어 사이클 – CPU가 주기억장치에서 한 번에 하나의 명령어를 인출하여 실행하는데 필요한 일련의 활동. 인출/실행/간접/인터럽트로 나누어짐.
 
 
- CPU의 동작 과정을 구성 요소와 연관시켜 설명?
:

1. 프로그램 카운터에 처리할 주소가 나온다.
2. 해당 주소를 메모리 주소 레지스터에 보낸다.
3. 메모리 주소 레지스터는 해당 주소에 접근하여, 그 공간에 있는 명령어를 가지고
메모리 버퍼 레지스터에 전달한다. (인출)
3-1 ) 해당 내용이 명령어라면 명령어 레지스터로 보낸다.
3-2 ) 해당 내용이 데이터라면 누산기로 보낸다.
4. 프로그램 카운터에 다음 수행할 메모리가 입력된다. (16bit 기준 +2만큼)
5. 명령어 레지스터의 내용을 제어장치로 보내어 해석한다.
6. 제어장치에서 해석한 내용을 토대로,
연산을 위해 접근해야 할 주소를 메모리 주소 레지스터로 보낸다. (이후 3 과정)
6-1 ) 연산을 필요로 하는 내용인데 누산기가 차 있다면 ALU로 이전의 데이터를 보낸다.
6-2 ) 저장을 필요로 하는 내용이라면 ALU의 결괏값을 누산기로 불러온 후
메모리 버퍼 레지스터에 보내어 메모리 주소 레지스터의 주소를 참고하여 보낸다.
https://youtu.be/Fg00LN30Ezg
 
 
- log는 왜 써?
: 현업에선 sysout 으로 출력 안 한다. log로 남겨야 에러만 모아서 볼 수도 있고 log 파일이 관리가 된다.
 
 
- Junit이란?
: 테스트를 도와주는 라이브러리. 테스트 프레임워크.
 
 
- welcome page란?
: 도메인을 누르고 들어갔을 때 가장 먼저 나오는 첫 화면.
 
 
- web server와 WAS는 무엇이며 차이는? 아파치와 톰캣의 차이는?
: web server란 정적인 데이터를 처리하는 서버. 단순 이미지나 html 파일만을 사용하는 곳은 웹서버만을 활용하여 안정적이고 빠르게 활용.
WAS는 Web Application Server로서, DB의 연동이나 데이터 조작 등을 활용할 때 쓰이는 동적인 데이터를 처리하는 서버이다.
즉, 컨테이너 기능(웹서버 + 서블릿)의 유무가 둘의 핵심 차이.
 
아파치는 web server이고 SW단체이며 웹서버 중 한 곳이다.
톰캣은 WAS이고 web server와 서블릿 컨테이너의 결합으로 다양한 역할을 수행하는 서버.
아파치에 만들었기 때문에 아파치 톰캣이라 칭한다.
 
아파치와 톰캣은 흔히 같이 사용하며, 이유로는 정적인 데이터는 web server에서 처리하고 동적인 데이터는 WAS에서 처리하는 것이 속도가 빠르기 때문이다.
https://cheershennah.tistory.com/54
 
 
- servlet이란?
: 통상 정적인 데이터는 html/CSS/Javascript를 사용하고, 동적인 데이터는 JSP를 사용한다.
이전엔 서블릿(자바 클래스의 일종)으로 동적 서버를 구현하였고, 한계와 단점을 발전시킨 것이 JSP이다. 현재도 서블릿은 많이 쓰인다.
 
서블릿이란 서버 쪽에서 실행되면서 클라이언트의 요청에 따라 동적으로 서비스를 제공하는 자바 클래스이다.
 

특징으로는 스레드 방식으로 실행되며, 자바로 만들어졌기 때문에 객체 지향의 특징을 가지고 컨테이너에서 실행되며 컨테이너 종류에 상관 없이 플랫폼 독립적으로 실행된다.
https://www.youtube.com/watch?v=9FKRpqQLMck
+ 참고) https://coding-factory.tistory.com/742
 
 
- 웹 브라우저가 요청을 했을 때 벌어지는 일을 웹 브라우저와 톰캣, 스프링 부트의 입장에서 설명? (Spring과 thymeleaf 템플릿 코드와 함께 설명)
:

웹 브라우저에서 localhost:8080/hello라는 url을 요청한다.
1. 톰캣 서버가 받아서 스프링에게 물어본다.
(코드에선 HelloController라는 클래스가 받음) @GetMapping을 통해 url에서 “hello”라는 페이지를 요청했을 때의 코드를 찾아서 관련 처리를 시행한다.
2-1 ) model이라는 파라메타를 통해 보내려는 페이지에 존재하는 변수를 바꿔준다.
(data -> hello!!)
2-2 ) return 뒤에 붙는 이름의 페이지로 이동한다. (hello.html)
3. viewResolver가 resources/templates 아래의 return된 해당 이름의 html 파일 실행.


- 스프링으로 작성한 내용을 cmd에서 실행하는 과정? (명령어와 함께 설명)
cmd 실행
해당 프로젝트가 있는 디렉토리로 접근 (디렉토리 내부 파일 리스트 명령어 : dir)
gradlew.bat build 실행 (window에선) -> 필요한 라이브러리등을 다운로드 받음
그럼 build 폴더가 생기고, 해당 폴더 내부에 hello-spring-0.0.1-SNAPSHOT.jar 파일 생성됨
java –jar hello-spring-0.0.1-SNAPSHOT.jar 실행
 
 
- jar 확장자는 무엇인가?
: 자바 프로젝트 압축 파일. 여러 필요한 자원들을 압축하여 놓아둔 파일.
 
과거에는 서버에 tomcat을 다 설치하고 특정 폴더에 war를 만들어서 했었어야 했는데
지금은 jar파일 하나만 집어넣고 실행시키면 됨.
https://newbiecs.tistory.com/122

 

'Study > 닥치는 대로 주워 담기' 카테고리의 다른 글

23.03.07  (0) 2023.03.13
23.03.06  (0) 2023.03.13
23.03.03  (0) 2023.03.13
23.03.02  (0) 2023.03.13
23.02.14  (0) 2023.02.16