<프로그램에 의한 입출력(Programmed I/O)>


CPU는 입력을 지시한 후 한 워드가 컨트롤러의 버퍼에 입력됐는지를 계속해서 확인하도록 하는 방식. 입력의 완료를 알리기 위해 인터럽트라는 수단이 필요 없는 대신 CPU가 지속적으로 완료의 여부를 확인해야하므로 CPU가 다른 작업에 동원되지 못해 낭비가 발생한다.


1. CPUI/O모듈에게 입출력장치의 상태를 검사하도록 요청

2. CPU는 입출력여부를 계속적으로 확인

3. 입출력 장치가 준비 상태라면, CPU가 데이터 전송을 요청

4. I/O모듈이 입출력 장치로부터 데이터를 수신

5. I/O모듈이 CPU에게 데이터를 보내줌

6. CPU는 입출력 모듈에 출력 명령을 레지스터에 기록하여 출력 동작을 수행하도록 함

<인터럽트에 의한 입출력(Interrupt-driven I/O)>

입력을 지시한 후 한 워드의 입력이 이루어지는 사이에 CPU는 다른 작업에 활용되어 지며 입력의 완료 시 인터럽트를 통해 CPU에 알려지는 방식

1. CPUI/O모듈로 읽기 명령을 보냄

2. I/O모듈은 주변장치에서 데이터를 읽는 과정동안 CPU는 다른 일을 수행 (CPUI/O모듈에게 권한을 줘서 I/O모듈이 뭐하는지 신경을 안씀)

3. I/O모듈이 주변장치로부터 데이터를 모두 받으면 CPU로 인터럽트 신호를 보냄

4. CPU가 입력된 데이터를 요구하고 I/O모듈이 CPU에게 데이터를 전송




<메모리에 직접 접근하는 입출력(Direct Memory Access, DMA)>

CPU는 입출력할 데이터의 시작주소와 크기 등을 채널에게 알려주고 다른 작업에 동원되어지며, 이때부터 입출력은 채널의 주도하에 이루어짐

채널은 CPU로부터 버스승인을 받고 사용하지 않으면 채널이 버스를 사용함 (CPU개입 없이 채널이 메모리에 데이터를 읽거나 씀)

시스템에서 한 번의 입출력 단위를 블록(Block)라고 부르는데 전송이 완료되면 채널은 블록 단위로 CPU에게 인터럽트를 보내 처리

<독립적인 입출력(I/O mapped I/O)>

입출력 장치들이 입출력 버스(I/O Bus)를 통해 CPU와 연결되어 있는 경우이며 메모리는 따로 메모리 버스를 통해 연결

입출력은 입출력을 담당하는 명령어를 통해 실행되는데, 입출력 버스를 통해 해당 장치의 지정, 데이터, 입출력을 구분해 주는 제어(Control) 값이 전달

 


<메모리 주소지정 입출력(Memory-mapped I/O)>

입출력 장치들이 메모리와 함께 메모리 버스에 연결되어 있으며, 입출력을 위한 명령어를 따로 두어 사용하지 않고 메모리에 대한 명령어(MOVE, LOAD)등을 사용하여 실제 입출력을 하게 되는 방식. 주소공간만큼의 메모리를 활용할 수 없다는 단점이 있다.

 



Copyright2014 By 휴먼사이언스

LIST

'Web Programming > Theory' 카테고리의 다른 글

Web? Web Server? Web Client? Web Browser?  (1) 2016.03.04
Internet? web? 그리고 History...  (0) 2016.03.03
웹 동작원리와 URL 구성요소  (0) 2016.02.04

<선언부>

JSP 페이지의 스크립트릿이나 표현식에서 사용할 수 있는 함수를 작성할 때 사용된다.

[문법]

 

 

 

이런식으로 리턴타입, 메서드이름, 파라미터 그리고 그 안에는 자바 코드가 존재한다.

위의 문법을 가지고 실습을 해보자.

<실습>

 

- 결과 -

 

<실습 -2>

사칙 연산을 계산하는 함수들을 만들어보자

 

 

 

 

 

- 결과 -

 

 

 

 

 

 

 

 

 

 

 

LIST

'Web Programming > JSP' 카테고리의 다른 글

JSP - 표현식  (0) 2016.03.27
JSP - 스크립트릿  (0) 2016.03.27
JSP - pageEncoding 속성  (0) 2016.03.26
JSP - page 디렉티브  (0) 2016.03.25

<표현식>

어떤 값을 출력 결과에 포함시키고자 할 때 사용된다.

 

 

[문법]

 

 

<실습>

표현식만 사용해서 값을 출력하는 코드를 보자.

 

 

- 결과 -

 

LIST

'Web Programming > JSP' 카테고리의 다른 글

JSP - 선언부  (0) 2016.03.28
JSP - 스크립트릿  (0) 2016.03.27
JSP - pageEncoding 속성  (0) 2016.03.26
JSP - page 디렉티브  (0) 2016.03.25

<스크립트릿>

JSP 페이지에서 자바 코드를 실행할 때 사용되는 코드의 블록이다. 한마디로 블록을 지정해 놓고 이 안에다가 자바 코드를 넣어서 실핼시켜주는 것이다.

 

[문법]

 

<실습>

간단한 자바 코드로 스크립트릿을 만들어보자

 

 

- 결과 -

 

LIST

'Web Programming > JSP' 카테고리의 다른 글

JSP - 선언부  (0) 2016.03.28
JSP - 표현식  (0) 2016.03.27
JSP - pageEncoding 속성  (0) 2016.03.26
JSP - page 디렉티브  (0) 2016.03.25

<pageEncoding 속성>

웹 컨테이너는 JSP 페이지를 분석하는 과정에서 JSP 페이지가 어떤 인코딩을 이용해서 작성되었는지 검사하며, 그 결과로 선택된 캐릭터 셋을 이용해서 JSP 페이지의 문자를 읽어오게 된다.

 

웹 컨테이너가 JSP 페이지를 읽어올 때 사용할 캐릭터 셋을 결정하는 기본 과정

1. 파일이 BOM으로 시작하지 않을 경우

기본 인코딩을 이용해서 파일을 처음부터 읽고, page 디렉티브의 pageEncoding 속성을 검색

pageEncoding 속성이 값을 갖고 있으면, 속성의 값을 파일을 읽어올 때 사용할 캐릭터 셋으로 이용

pageEncoding 속성이 없다면, contentType 속성을 검색. 있다면 contentType의 속성을 캐릭터 셋으로 사용

④ 둘 다 없다면 ISO-8859-1을 캐릭터 셋으로 이용

 

2. 파일이 BOM으로 시작할 경우

BOM을 이용해서 결정된 인코딩을 이용하여 파일을 읽고, page 디렉티브의 pageEncoding 속성을 검색.

pageEncoding속성의 값과 BOM을 이용해서 결정된 인코딩이 다르면 에러 발샐

 

<실습>

JSP 페이지는 EUC-KR로 만들고, 응답 결과는 UTF-8로 설정할 수 있다.

 

 - 결과 -

 

 

LIST

'Web Programming > JSP' 카테고리의 다른 글

JSP - 선언부  (0) 2016.03.28
JSP - 표현식  (0) 2016.03.27
JSP - 스크립트릿  (0) 2016.03.27
JSP - page 디렉티브  (0) 2016.03.25

<page 디렉티브>

page 디렉티브는 JSP 페이지에 대한 정보를 입력하기 위해서 사용된다. JSP 페이지가 어떤 문서를 생성하는지, 어떤 자바 클래스를 사용하는지, 세션에 참여하는지, 출력 버퍼의 존재 여부와 같이 필요한 정보들을 입력할 수 있다.

 

 

contentType 속성은 JSP 페이지가 생성할 문서의 타입을 지정한다. 이에 해당하는 값은 "text/html"이다.(기본값)

import 속성은 JSP 페이지에서 자바의 클래스를 사용하기 위해서는 어떤 자바 클래스를 사용할 것인지 미리 지정해 주어야 할때 사용한다.

 

<실습>

 

 

 

import 속성을 사용해 java.util.Date와 java.util.Calendar를 포함시켜 Date클래스와 Calendar클래스를 사용하였다. 그리고 날짜를 출력하였다.

 

 

 

 

LIST

'Web Programming > JSP' 카테고리의 다른 글

JSP - 선언부  (0) 2016.03.28
JSP - 표현식  (0) 2016.03.27
JSP - 스크립트릿  (0) 2016.03.27
JSP - pageEncoding 속성  (0) 2016.03.26

[*.jsp파일]

C:\project\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\사용자 지정의 하위 디렉토리

 

 

[전체 config 관련 web.xml파일]

C:\project\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\conf\web.xml

 

 

[웹 어플리케이션 마다 존재하는 web.xml 파일]

C:\project\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\사용자 지정의 하위 디렉토리\WEB-INF\web.xml

LIST

'Web Programming > WEB' 카테고리의 다른 글

Servlet이란?  (0) 2016.03.06
CGI(Common Gateway Interface)  (0) 2016.03.05
HTTP?, HTML?  (0) 2016.03.04

<Servlet>

Server + Let(허용)의 합성어이다. -> 서버(Server)에서 애플리케이션(Application)을 허용(Let)한다

<!--[endif]--> 

[서블릿의 구성]

 + 자바 프로그래밍

Java 프로그래밍 기반의 확장 CGI

 

[서블릿을 실행하기 위한 필요 조건]

JDK(Java Development Kit), 서블릿 컨테이너(Servlet Container) -> TOMCAT

 

 

<서블릿 컨테이너란?>

서블릿 객체를 만들어 보관하는 곳. 객체들을 보관하고 있다가 클라이언트로부터 서블릿에 대한 요청이 들어오면 해당 서블릿을 찾아서 클라이언트에게 서비스를 해주는 역할을 한다.

즉, 서블릿을 관리하고 서비스하는 프로그램이다.

 

[대표적인 서블릿 컨테이너]

톰캣(TOMCAT), 레신(Resin) 

 

[서블릿 컨테이너의 역할]
1. 웹 서버 역할
2. 자체적인 웹 서버 기능
3. 서블릿을 담고 있다가 클라이언트의 요청에 따라 서비스하는 역할을 한다.

 

<서블릿의 처리 절차>



 

1. 클라이언트로부터 HelloServlet 요청한다.
2. 서블릿 컨테이너에서 해당 서블릿(HelloServ.let) 객체를 검색한다. 있다면 진행,없다면 java파일을 class파일로 컴파일한 후, 그것을 이용해 서블릿 컨테이너에 로딩한다.
3. 해당 서블릿(HelloServlet)을 처리하기 위해 데이터베이스 작업이 필요하면 데이터베이스 연결 및 처리한다.
4. HelloServlet 서블릿의 응답 전송한다.

 

 

<서블릿의 특징>

자바 언어를 사용하고, 자바 프로그램 차원에서 동적으로 웹 페이지를 서비스한다.

스레드(Thread) 방식

 기존 CGI : 클라이언트 접속 → Process 생성 (CGI는 프로세스 단위로 동작하기 때문)

 서블릿 : 클라이언트 접속 → Thread 생성 (스레드 단위로 동작하기 때문)

 

[서블릿의 단점]
서블릿을 작성할 때 Java코드로 작성해야 한다. 그때 클라이언트로 전달해줘야할 HTML코드를 모두 print구문을 이용해서 작성해줘야 한다.
java파일안에 많은 내용이 포함됨..ㅠ

1. 화면에 표현될 HTML 코드를 프로그램적으로 작성해야 한다.

2. 서비스하기 전에 반드시 컴파일을 해야 한다.

 

 


Copyrightⓒ2014 By Jabook



LIST

'Web Programming > WEB' 카테고리의 다른 글

이클립스의 .jsp, .web.xml파일 저장 경로  (0) 2016.03.06
CGI(Common Gateway Interface)  (0) 2016.03.05
HTTP?, HTML?  (0) 2016.03.04

<CGI>

정적인 HTML 문서 서비스의 한계를 극복한다.

서버-사이드(Server-Side) 스크립트 언어의 시초 -> 서버측에서 해석되어 실행되는 언어

CGI =  + 프로그래밍

 

[CGI 특징]

프로그래밍을 이용해서 동적으로 생성된 웹 페이지를 클라이언트에 제공하는 모델



클라이언트는 cgi를 웹서버로 요청한다.

웹 서버는 CGI프로그램을 통해 동적으로 html문서를 생성한다.

생성된 HTML문서를 클라이언트로 서비스 해주는 것이다.

 

[CGI의 단점]

클라이언트의 요청만큼 프로세서를 생성해서 처리하기 때문에 처리량에 한계가 있다.

 

<확장 CGI>

처음 클라이언트의 요청에 따라 라이브러리를 메모리에 로딩한 후, 메모리에 적재된 라이브러리를 사용해서 클라이언트의 요청을 처리하는 방식

다수의 요청이라도 한 개에 해당하는 메모리만을 사용하기 때문에 일반적인 CGI에 비해 효율적이다.

 

<확장 CGI 언어>

- 서블릿(Servlet)

자바 기반의 확장 CGI 프로그래밍

자바로 된 확장 CGI

(HTTP) + 자바 프로그래밍

 

 JSP(Java Server Pages)

자바 기반의, 확장 CGI 기반의, 스크립트 방식의 프로그래밍

 

서블릿보다 쉽게 동적 웹 페이지를 생성할 수 있는 프로그래밍 언어

(HTTP) + 프로그래밍(Java) + 스크립트(Script) 기능

스크립트 방식의 서버 측 프로그래밍(Server Side Programming)

 

 


Copyrightⓒ2014 By Jabook

LIST

'Web Programming > WEB' 카테고리의 다른 글

이클립스의 .jsp, .web.xml파일 저장 경로  (0) 2016.03.06
Servlet이란?  (0) 2016.03.06
HTTP?, HTML?  (0) 2016.03.04

<네트워크>

서로간의 통신을 위해 두 개 이상의 장치들이 연결되어 있는 통신 구조이다.

만약, 집 안에 두대 이상의 컴퓨터가 연결되어 있다면 그 것 또한 하나의 네트워크가 될 수 있다. 

 

<인터넷>
수많은 컴퓨터 네트워크들을 연결시키는 네트워크이다.
네트워크와 네트워크를 연결되어 있는 것을 인터넷이라 한다.

 

<World Wide Web>

인터넷 서비스의 한 종류이다. FTP, TELNET과 같은 서비스의 일종이다.

WWW를 도식화하여 보여준다면 아래의 그림과 같다.



클라이언트가 Web브라우저를 통해 HTML문서를 요청하게 되면 웹서버는 클라이언트가 요청한 HTML문서를 찾아서 클라이언트에게 보내주는 방식이다.

 

<하이퍼링크>

하이퍼링크는 특정 단어나 이미지를 다른 문서와 연결하는 것이다.



먼저, 클라이언트가 하이퍼링크를 클릭하면 HTML 문서를 해당 웹서버로 요청한다. 그 요청을 받은 웹서버는 HTML문서를 찾아서 클라이언트에게 응답해준다. 클라이언트는 웹 브라우저를 통해 받은 HTML문서를 볼 수 있는 것이다.

 

 

<웹 서버(Web Server)>

클라이언트의 요청을 받아서 처리한 후 결과를 클라이언트에 전송해 주는 주체(서비스를 해주는 것)

 

<웹 클라이언트(Web Client)>

필요한 데이터를 웹 서버에 요청하는 주체(서비스를 받는 것)

 

<웹 브라우저(Web Browser)>

웹 서버로부터 받은 HTML 문서를 해석하고 보여주는 애플리케이션

예) Internet Explorer, Netscape Browser, Mozilla Firefox

 

 

 

 


 Copyrightⓒ2014 By Jabook

LIST

'Web Programming > Theory' 카테고리의 다른 글

I/O 모듈  (0) 2016.04.07
Internet? web? 그리고 History...  (0) 2016.03.03
웹 동작원리와 URL 구성요소  (0) 2016.02.04

+ Recent posts