본문 바로가기

JAVA

CPU Scheduling [Priority & Round Robin] 비선점형 스케줄링(Non-preemptive Scheduling) : - 프린트 - 어떤 프로세스가 CPU를 할당 받으면 그 프로세스가 종료되거나 입출력 요구가 발생하여 자발적으로 중지될 때까지 계속 실행되도록 보장한다. - 순서대로 처리되는 공정성이 있고 다음에 처리해야 할 프로세스와 관계없이 응답 시간을 예상할 수 있으며 선점 방식보다 스케줄러 호출 빈도 낮고 문맥 교환에 의한 오버헤드가 적다. - 일괄 처리 시스템에 적합하며, CPU 사용 시간이 긴 하나의 프로세스가 CPU 사용 시간이 짧은 여러 프로세스를 오랫동안 대기시킬 수 있으므로, 처리율이 떨어질 수 있다는 단점이 있다. 선점형 스케줄링(Preemptive Scheduling) : - 보통의 OS - 어떤 프로세스가 CPU를 할당받아 실행 .. 더보기
Context Switch 중요함!나중에 한번 더 다루기 더보기
CPU Scheduling [Dispatcher & Time Slice] CPU Scheduling 시분할이라는 것은 CPU의 실행시간을 100이라 보았을 때10으로 10개를 나누어서 10개의 쓰레드를 차례대로 교환하면서 실행하는 것을 말한다. 현재 사용하는 대부분의 운영체제는 32bit 운영체제이고 따라서 4GB의 어드레싱 영역을 얻을 수가 있다. 각각의 4G 영역을 2G씩 나누어서 상위 2G에는 시스템 코드, DLL, 프로세스 간 공유되는 데이터와 코드가 위치하고, 하위 2G에는 프로그램을 실행하는 프로세스, 응용 프로그램의 바이너리 이미지(실행파일), 응용 프로그램 공유 라이브러리(DLL)의 코드와 데이터가 위치한다 Dispatcher(H/W 인터럽트)란 CPU의 제어권을 STS(Short-Term Scheduling)에 의하여 선택된 Process에게 넘겨주는 모듈을 .. 더보기
Process 와 Thread Process( 프로세스 ): 프로세스는 프로그램이 메인 메모리에 적재된 상태로 실행되는 작업의 단위이다.생성(create) : 프로세스가 생성되는 중이다.준비(ready) : 프로세스가 CPU를 사용하고 있지는 않지만 언제든지 사용할 수 있는 상태로, CPU가 할당되기를 기다리고 있다. 일반적으로 준비 상태의 프로세스 중 우선순위가 높은 프로세스가 CPU를 할당받는다.실행(running) : 프로세스가 CPU를 차지하여 명령어들이 실행되고 있다.대기(waiting) : 보류(block)라고 부르기도 한다. 프로세스가 입출력 완료, 시그널 수신 등 어떤 사건을 기다리고 있는 상태를 말한다.종료(terminated) : 프로세스의 실행이 종료되었다. Thread( 스레드 ) - 실타래: 스레드(thread.. 더보기
ⓒ java.net Socket java.net 클래스 Socketpublic class Socketextends Object 이 클래스는, 클라이언트 소켓 (단지 「소켓」이라고도 불린다)을 구현합니다. 소켓이란, 2 개의 머신간에 통신을 실시할 때의 단 점입니다. 소켓의 실제의 처리는,SocketImpl 클래스의 인스턴스에 의해 실행됩니다. 어플리케이션은, 소켓 구현을 작성하는 소켓 팩토리를 변경하는 것으로, 로컬 방화벽(fire wall)에 적절한 소켓을 작성하도록(듯이) 자신을 구성할 수가 있습니다. 생성자 의 개요 Socket () 시스템으로 디폴트가 되어 있는 타입의 SocketImpl 를 사용해, 접속되어 있지 않은 소켓을 작성합니다. Socket (InetAddress address, int port) 스트림 소켓을 작성해.. 더보기
ⓒ java.net SocketImpl public abstract class SocketImplextends Object implements SocketOptions abstract 클래스 SocketImpl 는, 실제로 소켓을 구현하는 모든 클래스에 공통의 슈퍼 클래스입니다. 이것은 클라이언트 소켓, 서버 소켓의 양쪽 모두의 작성에 사용됩니다. 「프레인인」소켓은, 각 메소드를 기술대로 구현합니다. 방화벽(fire wall)나 프록시는 사용하지 않습니다. 메소드의 개요protected abstract voidaccept (SocketImpl s) 접속을 받아들입니다.protected abstract intavailable () 이 소켓으로부터 블록없이 읽어들일 수 있는 바이트수를 돌려줍니다.protected abstract voidbind .. 더보기
NetworkProgramming 실습 - FileUpLoad 서버 클래스 public class FileServerUpLoad { public static void main(String[] args) { // 서버단 프로그램 // 1.서버소켓 생성 ServerSocker : // 클라이언트가 연결하면 Socket을 생성해 주는 Socket Factory : 객체를 만들어주는 것 :Factory ServerSocket serverSocket = null; Socket socket = null; InputStream is = null;// 소켓으로 받아서is = socket.getInputStream(); FileOutputStream fos = null;// FileOutputStream 파일에다가 출력 try { // 포트번호를 넣어서 객체를 생성. serverS.. 더보기
Network 프로그래밍 IP 주소 : 네트워크에 연결된 컴퓨터들이 부여받은 주소 [IPv4 주소가 꽉차서 이제 IPv6로 넘어가는 추세] 네트워크 프로그래밍 과정 1. 연결 Socket = new Socket("IP주소" :String , portNo : int);ㄴ1.1 필요하면 필터를 추가한다.-- 파일을 읽어서 소켓으로 출력하는 패턴FileInputStream fis = new FileInputStream(new File(file));이라던지OutputStream os = socket.getOutputStream(); -- 소켓으로 받아 읽은 후, 파일에다 출력하는 패턴FileOutputStream fos = new FileOutputStream(new File(file));이라던지InputSt.. 더보기
JAVA에서 IO의 단점. 그리고 보완된 NIO http://eincs.com/2009/08/java-nio-bytebuffer-channel/ByteBuffer만이 Direct Buffer가 가능!ByteBuffer.allocateDirect()메소드를 사용해야 Direct Buffer가 생성됨! 위와 같이 File에 문자 기반 I/O를 사용하기 위해선 File path FileWriter나 FileReader를 만들고 추가 기능을 위해 PrintWirter, PrintReader등의 클래스, 버퍼기능을 추가하여 속도향상을 하기 위해선 Buffered라는 접두어가 붙은 클래스를 이용하면 되었습니다. 참으로 데코레이터패턴을 효과적으로 쓴 케이스라고 할 수 있겠네요. 덕분이 처음 배우는 사람도 그나지 어렵지 않게 사용 할 수 있었습니다.하지만 이런 기존.. 더보기
ⓒ java.io PrintStream java.io 클래스 PrintStreamPrintStream 는, 다른 출력 스트림에 기능을 추가합니다. 구체적으로는, 다양한 데이터값의 표현을 간이적으로 출력하는 기능을 추가합니다. 같이 다른 2 개의 기능도 제공되고 있습니다. PrintStream 는 다른 출력 스트림과는 달라, IOException 를 throw 할 것은 없습니다. 예외적인 상황에서는, 단지 내부 플래그가 설정될 뿐입니다. 이 플래그 상태는,checkError 메소드로 조사할 수가 있습니다. 필요에 따라서,PrintStream 를 자동적으로 플래시 하도록(듯이) 작성할 수 있습니다. 즉, 바이트 배열이 기입해졌는지,println 메소드의 1 개가 불려 갔는지, 또는 개행 문자 또는 바이트 ('\n')가 기입해진 뒤에,flush 메.. 더보기