반응형

JAVA

 

배열에서 2의 개수 구하기

 

public class Main {
    public static void main(String[] args){
        int[] a = {2,4,2,2,5};
        int count = 0;
        for (int i=0; i<a.length ; i++){
            if(a[i] == 2)
            count ++;
        }
        System.out.println(count);
    }
}

짝수 합계

public class Main {
    public static void main(String[] args){
        int a = 0, sum = 0;
        while (a < 10){
            a++;
            if (a%2 == 1)
                continue;
            sum += a;
        }
        System.out.println(sum);
    }
}

 

이차원 배열

 

public class Main {
    static void aFunc(int[][] a){
        for(int i = 0; i< a.length; i++){
            for(int j = 0; j < a[i].length; j++){
                a[i][j] = 0;
            }
        }
    }
    static void bFunc(int[][] a){
        int v = 1;
        for(int i = 0; i < a.length; i++){
            for(int j = i; j < a[i].length; j++){
                a[i][j] = v;
                v = v + 1;
            }
        }
    }
    static void cFunc(int[][] a){
        for(int i = 0; i<a.length; i++){
            for(int j = 0; j < a[i].length; j++){
                if(a[i][j] == 0)
                    System.out.print(" ");
                else
                    System.out.printf("%3d", a[i][j]);
            }
            System.out.println();
        }
    }
    public static void main(String[] args){
        int [][] a = new int[5][5];
        aFunc(a);
        bFunc(a);
        cFunc(a);
    }
}

 

Python

 

: 배우기 쉽고, 강력한 프로그래밍 언어로써 플랫폼에 독립적이며 인터프리터식, 객체지향적, 동적 타이핑 대화형 언어이다.

- 구글의 3대 개발 (C, Java, Python) 언어

* 1에서 10까지 홀수 합계와 홀수 계수

a = 0
b = 0

for i in range(10):
    if (i % 2):
        a=a+i
        b=b+1
        
print(a, b)

운영체제

: 사용자로 하여금 컴퓨터의 하드웨어를 보다 쉽게 사용할 수 있도록 인터페이스를 제공해 주는 소프트웨어 이다.

하드웨어는 컴퓨터의 장치를 제어하고 데이터를 처리하는 중앙 처리 장치, 데이터를 저장하는 기억 장치, 외부와의 통신을 담당하는 통신 장치 그리고 데이터 입력과 출력을 담당하는 입출력 장치 등으로 구분될 수 있다. 즉 , 운영체제는 사용자 편의성을 위한 인터페이스인 동시에 다양한 자원을 관리하는 자원 관리자이다.

 

운영체제 목적

: 처리 능력 향상, 신뢰도 향상, 사용 가능도 향상, 응답시간 단축 등

1. 처리 능력(Throughpu) : 일정 시간 내에 시스템이 처리하는 일의 양

2. 신뢰도(Reliability) : 시스템이 주어진 문제를 정확하게 해결하는 정도

3. 사용 가능도(Availability) : 시스템을 사용할 필요가 있을 때 즉시 사용 가능한 정도

4. 응답시간, 반환시간 (Turn Around Time) : 시스템에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간

 

운영체제 기능

- 자원의 효율적인 스케줄링 및 관리 (프로세스, 기억장치, 주변장치, 파일 관리)

- 데이터 공유 및 주변장치 관리

- 입/출력 장치와 사용자 프로그램을 제어

- 스스로 어떤 유용한 기능도 수행하지 않고 다른 응용 프로그램이 유용한 작업을 할 수 있도록 환경 마련

- 시스템 사용 도중 발생하는 내부, 외부적인 오류로 부터 시스템을 보호

- 오류 검사 및 복구 기능

- 운영체제 이외의 프로그램들은 운영체제가 제공한 기능에 의존하여 컴퓨터 시스템의 자원에 접근

 

운영체제가 자원들을 관리하는 과정

1. 시스템 내 모든 자원들의 상태 파악

2. 어떤 프로세스에게 언제, 어떤 자원을 할당할 것인가를 결정하는 분배 정책 수립

3. 자원을 배당하고 운영함으로써 수립된 정책을 수행

4. 프로세스에 배당된 자원 회수

 

운영체제가 주요 자원 관리

1. 프로세스 : 프로세스 생성과 제거, 시작과 정지, 메시지 전달 등의 기능 담당

- 프로세스 스케줄링 및 동기화 관리

2. 기억장치 : 프로세스에게 메모리 할당 및 회수 관리

3. 주변장치 : 입/출력 장치 스케줄링 및 전반적인 관리

4. 파일 : 파일 생성과 삭제, 변경 , 유지 등 담당

 

* 프로그램 : 보조기억장치에 저장된 프로그램
* 프로세스 : CPU가 실행중인 프로그램
* 프로세서 : CPU(프로세스를 실행)

운영체제 계층 구조

: 하드웨어 - CPU 관리 - 기억장치 관리 - 프로세스 관리 - 주변장치 관리 - 파일시스템 관리 - 사용자 프로세스

 

운영체제 종류

1. 개인용 OS (Single-User 시스템)

- MS-DOS : Windows 이전에 Microsoft사가 개발한 운영체제

- Windows : Microsoft사 운영체제 (GUI)

- MacOS: Apple 사가 UNIX 기반으로 개발 (GUI)

 

2. 서버용 OS (Multi-User 시스템)

- Windows NT(Server) : Microsoft사가 공개한 서버 운영 체제

- UNIX : AT&T 벨 연구소, MIT , General Electirc 이 공동 개발

- Linux : UNIX와 호환이 가능한 Kernel 임, 리누스 토발즈가 개발

 

*MS-DOS 는 단일 작업 처리 시스템 (나머지는 다중 작업 처리 시스템)

 

Windows 특징

 

1. 마이크로소프트사에서 1995년에 윈도우 95 발표 이후 98, ME, XP, 7, 8 ,9 , 10 등의 버전으로 지속 출시

- GUI : 사용자가 컨트롤 하는 마우스의 아이콘을 이용하여 소프트웨어를 실행시키는 편리한 인터페이스를 지원

- 마이크로소프트사만이 수정 및 배포

- 고객 지원이 체계적이라는 장점을 가지고 있지만, 문제점이 발견되었을 시 수정에 시간이 걸린다는 단점이 있고, 이런 시간적인 차이를 이용하는 악성 해커들로 인하여 유닉스 계열의 운영체제에 비하여 보안에 취약하다는 문제점이 지속적으로 제기되고 있다.

 

2. 선점형 멀티태스킹

: 우선순위가 높은 다른 프로세스가 할당된 CPU를 강제로 빼앗을 수 있는 방법

- 실시간 처리, 대화식 시분할 처리(오버헤드 발생)

 

3. PnP

: 컴퓨터에 주변기기를 추가할 때 별도의 물리적인 설정을 하지 않아도 설치만 하면 그대로 사용할 수 있도록 하는 기능. 꽂아서 바로 사용한다는 뜻.

 

4. OLE

: 어떤 응용 프로그램에서 만든 내용을 개체라고 보고 그 개체를 다른 프로그램에 연결하거나 삽입하여 자료를 공유하는 방식을 말하는 것으로 예를 들어, 페인트에서 그림을 문서 작성프로그램에 제공해 보다 효과적으로 문서를 꾸밀 수 있도록 한다.

 

5. Single-User 시스템 : 동시에 여러 사람이 사용할 수 있는 Multi-User 시스템이 아님

 

UNIX/LINUX 특징

1. UNIX와 LINUX 차이점

 

리눅스

- 대부분 무료이며 지원정책에 따라 일부 유료 서비스 제품

- 개발자, 일반 사용자

- 커뮤니티에서 개발

- 오픈소스 개발

- 모바일폰, 태블릿 등 다양하게 사용

- GUI 제공, 파일시스템 지원, BASH 셀 사용

 

유닉스

- 대부분 유료

- 메인 프레임, 워크 스테이션 등 대형 시스템 관리자가 주 사용자

- IBM, HP 등에서 개발

- 대부분 사업자에 의해 배포

- 인터넷 서버, 워크스테이션 등 대형 서비스에 주로 사용

- 커맨드 기반이 주였으나 GUI도 제공하는 추세, 파일시스템 제공

- 기본은 Bourne Shell, 현재는 많은 shell 과 호환가능

 

UNIX

: 1960년대 말에 미국 AT&T 벨 연구소에서 개발한 운영체제이다. 원래 워크스테이션/ 서버용이 었지만, 데스크탑이나 임베디드용으로도 쓰인다. UNIX는 컴퓨터 역사상 가장 중요한 운영체제라고 할 수 있다. 이는 무엇보다도 처음으로 어셈블리가 아닌 C언어라는 고급 프로그래밍 언어로 커널까지 작성된 운영체제이다. 유닉스는 고급언어인 C 언어로 개발되었기 때문에 다른 하드웨어로 이식하기가 쉬웠으며, 멀티태스킹 기술을 도입하여 여러 사용자가 동시에 사용할 수 있게 되었다. 유닉스 이후 시스템 프로그래밍 언어의 업계 표준이 된 C언어부터가 원래 유닉스를 프로그래밍하기 위해 개발된 것이다.

*임베디드 시스템

: 특정제품이나 솔루션에서 주어진 작업을 수행할 수 있도록 추가로 탑재되는 솔루션이나 시스템

 

UNIX 특징

- 대부분 C언어로 작성 -> 높은 이식성과 확장성

- 다양한 네트워킹 가능

- 대화식 시분할 운영체제 

- 다중 사용자 시스템

- 다중 태스킹 운영체제 : 동시에 여러 가지 작업을 수행

- 파일 소유자, 그룹 및 그 외 다른사람들로부터 사용자를 구분하여 파일을 보호

- 파일 시스템 : 계층 구조

- 사용자 위주의 시스템 명령어 제공

- 사용자는 하나 이상의 작업을 백그라운드에서 수행할 수 있어 여러 개의 작업을 병행 처리 할 수 있다.

- 개방형 시스템 : 구조 공개, 제품의 공급업자가 많다, 라이센스 비용이 싸다.

 

UNIX 시스템의 구성

커널

- UNIX의 가장 핵심적인 부분

- 주기억장치에 적재된 후 상주하면서 실행

- 프로세스, 기억장치, 파일, 입.출력 관리

- 프로세스간 통신, 데이터 전송 및 변환 등 여러 가지 기능 수행

- 파일 시스템의 접근 권한을 처리

- 자원 활용도를 높이기 위해 스케줄링

 

- 명령어 해석기

- 시스템과 사용자 간의 인터페이스 담당

 

리눅스

: 안정성과 신뢰도를 높이는 운영체제로 인정받으면서 인터넷에 소스가 공개된 무료 프로그램이기 때문에 누구나 사용할 수 있으며 컴퓨터 전문가가 언제든 이를 개선할 수 있어 전문가들을 중심으로 보급돼 왔다. 이를 개발하고 있는 업체 및 개발자들로부터 수시로 업그레이드되고 있다.

리눅스는 오픈소스를 주장하는 소프트웨어 공유 운동 단체인 GNU 프로젝트의 전폭적인 지원과 전 세계 프로그래머의 참여하에 전 세계 서버용 OS의 27%를 점유할 만큼 급성장했다.

 

Mac OS 특징

- 유닉스 기반으로 만들어져 애플사의 제품군에서만 사용이 가능한 그래픽 기반 운영체제이다.

- 매킨토시 OS는 프로그램을 카피하고 삭제함으로써 install 과 uninstall의 과정을 단순화

- 드라이버 설치 또한 OS의 확장 폴더에 넣고 재부팅을 하면 인식되어 매우 간단하다.

 

모바일 운영체제

1. 안드로이드

: 리눅스 커널 위에서 동작하며 자바 및 코틀린 언어로 앱을 만들어 작동하는 휴대 전화나 소형기기에서 사용되는 운영체제

- 구글이 공개한 개방형 모바일 운영체제

- 안드로이드의 모든 소스 코드를 오픈 소스로 배포하고 있어, 프로그램을 독자적으로 개발해 탑재할 수 있으며 구글플레이를 통해 판매 가능

 

 

2. IOS

:  OS X를 기반으로 만들어져 있고, 멀티 터치를 비롯한 휴대 전화 및 스마트폰에는 없었던 사용자 인터페이스로 구현한 운영체제

- 애플의 모바일 운영체제

- 처음 공개 되었을 당시에는 사용자가 개발한 애플리케이션의 추가가 허영되지 않았으나, 2008년 이후 애플의 앱 스토어를 통해 자유롭게 사용자 애플리케이션을 공개하고 판매할 수 있게 됨

 

 

 

 

 

 

 

 

 

반응형

+ Recent posts