1. Node.js를 하다 다시한번 linux의 env 사용법 발견

앱 배포 모듈인 Express.js 의 환경설정 파일 config을 보면 env: process.env.ooo, port: process.env.ooo 등 환경변수가 설정되어있다.

이 환경변수를 어디서 읽어오는가 했더니 linux/unix 시스템의 환경변수를 가져오는 것이었다.

 

2. env 사용하기

쉘에서 env을 입력해보면 시스템에 저장되어있는 환경변수 리스트가 촤르륵 나오는것을 볼 수 있다. 대표적으로 HOME 이라던가..

이 환경변수로 노드 앱의 환경 또한 변경 할 수 있고, 프로그램시에 중요한 key 들은 노출시키지 않는 방법으로 사용하는데 편하다는것을 알았다. ( * 보통 중요 key는 외부 파일로 뺀후 파일자체를 임포트하는 식으로 사용했었는데, 보안을 신경쓰지 않고 api key를 그대로 노출해서 github에 올리면 보안위험 메일이 날아온다는것을 얼마전 프로젝트를 진행하면서 처음알았다..)

 

2.1. env 명령어 이용하기.

 

- 이미 생성된 리스트 출력 : env 

-              환경변수 생성 : env 변수이름=변수의값

-              환경변수 삭제 : env -u 변수이름

 

3. 노드에서 env 값 가져오기

process.env.변수이름

반응형

RAID의 개요

RAID 란? 위키에 따르면 아래와 같다.

복수 배열 독립 디스크(Redundant Array of Independent[Inexpensive] Disks)는 여러 개의 하드 디스크에 일부 중복된 데이터를 나눠서 저장하는 기술이다. 디스크 어레이(disk array)라고도 한다.

이 방법을 사용할 시 데이터를 여러 개의 디스크에 저장하여 입출력 작업이 균형을 이루게 되어 전체적인 성능을 상향시킨다. 하나의 RAID는 논리적으로 하나의 디스크로 인식하며, 하드웨어 수준의 RAID에서 주목할 기능은 전원이 켜있는 상태에서 드라이브를 교체할 수 있는 핫스왑 베이가 있다.


RAID에서 사용하는 기술

  1. 스트라이핑 (Striping)
    연속된 데이터를 여러 개의 디스크에 라운드로빈 방식으로 기록하는 기술로 프로세서가 하나의 디스크에서 R/W 하는 것보다 더 빠르고 유용하다. 하나의 섹터를 읽는 시간에 여러 개 동시 읽기
  2. 미러링 (Mirroring)
    디스크에 에러 발생 시 손실을 막기 위해 다른 장치에 추가로 중복 저장하는 기술 HW/SW 적으로 구현할 수 있다.

RAID 종류

Linear RAID

두 개 이상의 하드를 사용하는 가장 단순한 RAID, 순차적인 디스크 사용을 말한다. A+B+C 디스크가 있다면 A부터 사용하는 방법이다.

RAID-0

스트라이핑 기술을 사용하여 빠른 I/O 속도를 제공한다. 데이터를 중복이나 패리티 없이 분산 기록한다. 구성 디스크 중 하나라도 오류 발생 시 복구할 수 없다. 1TB 파일을 저장한다면 A+B+C에 1/3+1/3+1/3씩 저장하는 방법

RAID-1

미러링 기술을 사용하여 두 개의 디스크에 같이 기록한다. 각 드라이브를 동시에 읽을 수 있어서 Read 성능이 좋다. Write는 약간 저하된다. 디스크 오류 발생 시 복구가 가능하지만, 디스크 공간 소모가 2배이다.

RAID-2

스트라이핑 기술을 사용하여 구성한다. 에러를 감지하고 수정하기 위해 ECC(Error Check& Correction) 정보를 사용한다.

RAID-3

스트라이핑 구성으로 패리티 정보를 저장하기 위해 별도의 디스크를 사용한다. I/O 작업이 동시에 모든 디스크에 이루어지므로 겹칠 수 없다. 대형 레코드 시스템에서 사용한다.

RAID-4

블록 형태의 스트라이핑 구성으로 단일 디스크로부터 레코드를 읽을 수 있어 속도가 빠르다. 쓰기 시엔 병목 현상 가능성 있다. 균등하게 나누어 저장

RAID-5

RAID 3, 4에서 별도의 패리티 정보 디스크를 사용하는 문제를 보완하여 스트라이핑으로 구성된 디스크 내에서 처리하게 하였다. 1개의 디스크가 고장 나더라도 남은 디스크로 데이터 복구 진행이 가능하다. 작고 랜덤한 I/O가 많을수록 성능이 좋다. 최소 3개의 디스크로 구성된다. 균등하지 않음

RAID-6

RAID 5와 같은 개념이지만, 다른 드라이브들 간에 분포되어있는 2차 패리티 정보를 넣어 2개의 하드에 문제가 생긴다 하여도 복구할 수 있도록 설계한것으로 RAID 5보다 안정성 시스템에 사용된다. 최소 4개의 디스크로 구성된다. 균등하지 않음

RAID-7

하드웨어 컨트롤러에 내장된 실시간 OS를 사용하여 구성하는 방식으로 속도가 빠른 버스를 이용한다. 하나의 업체만 이 구성을 제공한다.

RAID 0+1

디스크 2개를 RAID-0과 같이 구성하고, 다시 RAID-1의 방식으로 구성한다. 최소 4개의 디스크로 구성된다.

RAID-10

RAID 0+1의 반대 개념이다.

RAID-53

RAID-3 방식에 별도로 스트라이프 어레이를 구성하는 방식이다.

반응형

인터네트워킹 장비


네트워크간 연결을 인터네트워킹이라 하는데 이 기능을 수행하는 장치를 게이트웨이라고 한다. 일반적으로 서로 다른 통신망과 프로토콜을 사용하는 네트워크 간에 통신을 가능케 하는 장치를 뜻한다. 대표적으로 리피터, 브리지, 라우터가 있다.

리피터(Repeater)

물리적 신호는 실제 거리가 멀어질수록 약해진다. 이 신호를 증폭해주는 장치를 리피터라고 한다. OSI 모델의 첫 번째 물리 계층에서 동작한다.

브리지(Bridge)

데이터 링크 계층의 여러 개의 네트워크 세그먼트를 연결해주는 장치로 리피터나 허브의 기능을 하면서, 통신량을 조정하여 트래픽 관리가 가능하다.

라우터(Router)

물리 계층, 데이터 링크 계층, 네트워크 계층의 기능을 지원하는 장치로 브리지 기능에 네트워크 계층에 대한 경로 선택 기능을 추가로 제공한다. 이를 위한 라우팅 테이블이 존재하는데 자신과 연결된 네트워크 및 호스트 정보를 관리한다.

반응형

프로세스와 스레드의 차이 

프로세스는 운영체제로부터 자원을 할당받아 실행되고, 스레드는 프로세스로부터 자원을 할당받아 실행된다.

하나의 프로세스 안에서 여러 스레드를 생성 가능하다. 각 스레드는 개별 스택을 가지고, 프로세스의 전역 메모리 공간을 공유하며, 프로그램을 실행한다.( 프로세스는 코드, 데이터, 스택, 힙 메모리 영역을 기반으로 실행하며, 스레드는 프로세스 안에서 개별적 스택을 가지고, 코드, 데이터, 힙 영역을 공유하며 실행된다.)

스크립트언어와 컴파일 언어의 차이점

스크립트 언어는 python, ruby, php 등 인터프리터 언어이며, 컴파일 언어는 java, c, c++ 등이 있다.

컴파일 언어는 컴파일러를 통해 컴파일되어, 기계어 상태로 실행된다. 속도가 빠르며 기계어 번역시 최적화를 통해 속도 향상이 가능하다. 스크립트 언어는 실행 단계에서 한줄씩 기계어로 변환 후 실행된다. 속도가 느리며 최적화가 어렵다.

동기비동기 차이점

동기식은 요청에 대한 응답을 기다린 후 응답이 오면 다음 요청을 하는 방식이고 비동기식 일처리는 요청에 대한 응답을 기다리지 않고 일처리를 진행하는것

동기비동기의 장단점

동기식 구성은 단순하고 순서가 보장되는 실행이 가능하다. 여러일 동시 수행 멀티태스킹이 불가능하다.

비동기식은 동시에 여러 일을 수행할 수 있지만, 일정 시간당 요청량이 많은 경우 부하가 발생할 수 있다.

DB인덱스 사용 이유와 장단점

데이터의 양이 많아 인덱스를 사용한다. 인덱스는 데이터를 논리적으로 정렬해서 검색과 정렬 속도를 높이기 위해 사용한다. 단, 데이터 삽입, 변경이 수시로 일어나면 매번 인덱스를 변경해야하는 단점이 존재한다. 성능 저하를 막기 위한 고려 필요.

Redis와 mongoDB

둘다 Nosql 방식을 사용하는 것으로 몽고디비가 document 형식으로 데이터를 저장하는데 반해, Redis는 key-value 형식으로 데이터를 저장한다. Redis는 인메모리 DB로 데이터를 메모리에 저장하고 관리하여 성능이 좋지만 데이터가 유한저장되어 캐시와 같이 저장 기한이 있고 성능위주 기기에 사용된다. 몽고디비는 mysql 처럼 서버-클라이언트 방식으로 가변데이터 구조를 다루는데 유용하다.

JVM과 JAVA 프로그램 실행과정

JVM은 자바가상머신의 약자로 자바프로그램을 자바 API를 기반으로 실행하는 역할을 한다. 프로그램이 실행되면 JVM이 OS로부터 메모리를 할당받고 자바 바이트코드로 변환된 class 파일을 class 로더를 통해 jvm으로 로딩시킨다. 로딩된 class 파일은 execution engine을 통해 해석되고, 실행된다. 필요시 garbage collection을 수행해서 불길한 메모리를 해제한다.

JVM은 OS로 부터 할당 받은 메모리를 세영역으로 분리

메소드 영역, JVM 스택, 힙 영역
힙 영역에 생성된 객체가 저장되고 힙영역은 Young, Old, Permanent generation으로 나뉘고 young영역에 eden, S0, S1로 세분화 된다. 이때 eden이 가득차면 Minor GC가 실행되고 Old가 가득차면 Major GC 가 작동한다. (큰 문제)

GC의 필요이유

메모리를 명시적으로 지정해서 해제하지 않기 때문에 필요하다. 경우에 따라 더이상 필요없는 객체를 찾아 지우는것이 필요하다.

Overwriting 과 Overloading

둘다 oop에서 중요한 다형성에 해당하는 내용으로 함수 재정의는 상속받은 경우 부모함수와 다른 작업을 위해 내용을 바꾸는 것이며 오버로딩은 파라미터의 자료형이나 개수가 다른 형태이다.

interface 와 abstract의 차이

두 경우 모두 new가 불가능하며 상속시 interface와 abstract 로 나뉜다.

abstract : 추상 클래스는 추상 메소드를 1개 이상 가지고 있는 클래스를 의미한다.

기존 메소드 이외에 추상 메소드를 상속시켜서 반드시 구현이 필요한 추성 메서드를 상속받은 클래스에서 구현시키는것이 주 목적이다.

interface : 상수와 메서드의 선언 집합으로 implements를 받은곳에서 구현을 강제시킨다. 인터페이스를 이용한 다중 상속이 가능하다.

디자인패턴 : 공통적인 소프트웨어 코드 작성 문제를 해결하는데 도움이 될 수 있는 패턴 소프트웨어 라이브러리를 쉽게 사용할 수 있게 해준다. 또한, 쉽게 이해하기 위한 공통 작업에 대해 간편한 메소드를 제공한다.

싱글톤패턴 : 전체 프로그램에서 단 1개의 객체만 생성하여 공유할 수 있는 코드 패턴

퍼사드패턴 : 클래스 라이브러리 같은 어떤 소프트웨어의 다른 커다란 코드 부분에 대한 간략화 된 인터페이스를 제공하는 객체를 만드는 코드 패턴 라이브러리 밖 코드가 라이브러리 안 코드에 의존을 줄여준다.

예) class Cpu, class Memory, class HardDrive 를 class Computer에서 구현해서 밖에서는  class Computer만 이용한다.
이때, class Computer가 facade가 되는것이다.

파이썬 generator란?

제너레이터는 Iterator를 생성해주는 함수로, 함수 안에 yield 키워드를 사용한다.

Iterator는 next() 메소드를 이용해 데이터를 순차적으로 접근할 수 있는 함수이다. Generator는 한번에 모든 데이터를 메모리에 적재할 필요가 없어서 메모리 효율이 높고 계산 결과가 필요할 때까지 계산을 늦출 수 있으므로 수행 시간이 긴 연산을 필요한 순간까지 늦출 수 있다는 장점을 가지고 있다.

파이썬 GIL

한번에 하나의 쓰레드만 수행할 수 있도록 인터프리터에 lock을 거는 기능

파이썬 객체는 GC를 위해 reference count를 가지고 있는데, 해당 객체를 참조할 때마다 이 count를 변경해야 한다. 멀티 쓰레드를 실행하게 되면, 각 스레드가 공유하는 객체들에 대해 각각 lock을 거는경우 성능상 이슈와 dead lock 발생 위험이 존재하기 때문에 인터프리터 레벨에서 한 시점에 실행되는 스레드는 1개로 제한한다.

이를 해결하기 위해 Multiprocessing 라이브러리를 사용하면 개별 프로세스가 생성되고 프로세스별 인터프리터 락이걸려 동시 실행이 가능해진다.

클래스와 객체의 차이점

클래스는 객체를 만들기 위한 하나의 틀이라고 생각할 수 있으며, 클래스를 구현화 하면 객체가 된다.

JAVA 접근제한자

public : 동일클래스, 동일패키지, 다른 패키지의 자식클래스, 다른패키지

protected : 동일클래스, 동일패키지, 다른 패키지의 자식클래스

default : 동일클래스, 동일패키지

private 동일 클래스

객체지향 5대 원칙

1. Single Responsiblity Principle (단일 책임 원칙)

 - 소프트웨어의 설계 부품(클래스, 함수 등)은 단 하나의 책임만을 가져야 한다. 여기서 책임이란, '기능' 정도의 의미로 해석하면 된다.

설계를 잘한 프로그램은 기본적으로 새로운 요구사항과 프로그램 변경에 영향을 받는 부분이 적다. 다시말해, 응집도는 높고 결합도는 낮은 프로그램을 뜻한다. 만약 한 클래스가 수행할 수 있는 기능, 즉 책임이 많아진다. 책임이 많아지면 클래스 내부의 함수끼리 강한 결합을 발생할 가능성이 높아진다. 이는 유지보수에 비용이 증가하게 되므로 따라서 책임을 분리시킬 필요가 있다.

2. Open-Closed Principle (개방-패쇄 원칙)

 - 기존의 코드를 변경하지 않고(Closed) 기능을 수정하거나 추가할 수 있도록(Open) 설계해야 한다.

OCP에 만족하는 설계를 할 때 변경되는 것이 무엇인지에 초점을 맞춘다. 자주 변경되는 내용은 수정하기 쉽게 설계 하고, 변경되지 않아야 하는 것은 수정되는 내용에 영향을 받지 않게 하는 것이 포인트다. 이를 위해 자주 사용되는 문법이 인터페이스(Interface)이다. 다음 예제를 함께 보자.

class SoundPlayer{
	void play(){
    sysout("play wav");
    }
}

public class Client {
	public static void main(String[] args) {
    	SoundPlayer sp = new SoundPlayer();
        sp.play();
        }
    }
}

SoundPlayer 클래스는 음악을 재생해주는 클래스이다. 이 클래스는 기본적으로 wav파일을 재생할 수 있다. 그러나 SoundPlayer가 다른 포맷의 파일, 예를 들어 Mp3 파일을 재생하도록 요구사항이 변경 되었다고 하자. 요구사항을 만족 시키기 위해서는 SoundPlayer의 play() 메소드를 수정하여야 한다. 그러나 이러한 소스코드 변경은 OCP 원칙에 위배된다. 

그렇다면 어떻게 해야 OCP 원칙을 만족시킬 수 있을까? 다양한 방법이 있지만 여기선 앞에서 언급한 인터페이스를 이용하여 OCP를 만족시켜 보자. 먼저 변해야 하는것은 무엇인지 정의한다. 위 클래스에서는 play() 메소드가 변해야 하는 것이다. 따라서 play() 메소드를 인터페이스로 분리한다.

interface playAlgorithm{
	public void play();
}

class Wav implements playAlgorithm{
	@override
    public void play() {
    	sysout("play Wav");
	}
}

class Mp3 implements playAlgorithm{
	@Override
    public void play() {
    	sysout("play Mp3");
	}
 }

 

일단 재생하고자 하는 파일 클래스(Wav, Mp3)를 만들어 PlayAlgorithm 인터페이스의 play() 메소드를 재정의하도록 설계한다.

class SoundPlayer{
	private playAlgorithm file;
    
    public void setFile(playAlgorithm file) {
    	this.file = file;
	}
    
    public void play(){
    	file.play();
    }
}

public class Client {

	public static void main(String[] args) {
    	
        SoundPlayer sp = new SoundPlayer();
        sp.setFile(new Wav()); // 또는
        sp.setFile(new Mp3()); // 선택
        
        sp.play();

 

SoundPlayer 클래스에서는 playAlgorithm 인터페이스를 멤버 변수로 만든다. 그 후 SoundPlyaer의 play() 함수는 인터페이스를 상속받아 구현된 클래스의 play()함수를 실행시키게 한다. 마지막으로 메인함수에서 setter를 이용하여 우리가 플레이하고자 하는 파일의 객체를 지정해주면 된다.

앞에서 언급하진 않았지만 이와 같은 설계를 디자인 패턴에서는 Strategy Pattern(전략 패턴)이라고 한다.

결과적으로 우리는 SoundPlayer 클래스의 변경 없이 재생되는 파일을 바꿀 수 있으므로 위 코드는 OCP를 만족한다. 앞서 말했듯이 OCP를 만족한 설계는 변경에 유연하므로 유지보수 비용을 줄여주고 코드의 가독성 또한 높아지는 효과를 얻을 수 있다.

3. Liskov Substitution Principle (리스코프 치환 원칙)

 - 자식 클래스는 부모클래스에서 가능한 행위를 수행할 수 있어야 한다.

리스코프 치환 원칙은 MIT 컴퓨터 사이언스 교수인 리스코프가 제안한 설계 원칙이다. 부모 클래스와 자식 클래스 사이의 행위에는 일관성이 있어야 한다는 원칙이며, 이는 객체 지향 프로그래밍에서 부모 클래스의 인스턴스 대신 자식 클래스의 인스터스를 사용해도 문제가 없어야 한다는 것을 의미한다.

상속 관계에서는 일반화 관계(IS-A)가 성립해야 한다. 일반화 관계에 있다는 것은 일관성이 있다는 것이다. 따라서 리스코프 치환 원칙은 일반화 관계에 대해 묻는 것이라 할 수 있다.

이해를 돕기위해 도형을 예시를 들어보자. 도형 클래스와 사각형 클래스가 있고, 사각형 클래스는 도형 클래스의 상속을 받는다고 가정하자. 

(1) 도형은 둘레를 가지고 있다. 
(2) 도형은 넓이를 가지고 있다. 
(3) 도형은 각을 가지고 있다. 

일반화 관계(일관성인지 확인하는 방법은 단어를 교체해 보면 알 수 있다.  (1) ~ (3)의 도형이란 단어 대신 사각형을 넣어보자. 

(1) 사각형은 둘레를 가지고 있다. 
(2) 사각형은 넓이를 가지고 있다. 
(3) 사각형은 각을 가지고 있다. 

(1) ~ (3) 모두 딱히 이상한 부분이 보이지 않는다. 따라서 도형과 사각형 사이에는 일관성이 있다고 할 수 있다. 

여기서 원(Circle) 이라는 도형에 대해 생각해보자. 원 클래스 역시 도형 클래스의 상속을 받는다고 가정하자. 앞에서 언급한 (1) ~ (3)의 도형 단어 대신 원을 대입해보자. 

(1) 원은 둘레를 가지고 있다. 
(2) 원은 넓이를 가지고 있다. 
(3) 원은 각을 가지고 있다. 

문장을 읽어보면 (3)번 문장이 어색하다는 것을 알 수 있다. 따라서 도형 클래스는 LSP을 만족하지 않은 설계라 할 수 있다. 따라서 (3)문장에 대해서는 일반화 관계가 성립하도록 수정되어야 한다. 

4. Dependency Inversion Principle (의존 역전 원칙)

- 의존 관계를 맺을 때, 변화하기 쉬운것 보단 변화하기 어려운 것에 의존해야 한다는 원칙이다.

여기서 말하는 변화하기 쉬운것이란 구체적인 것을 말하고, 변화하기 어려운 것이란 추상적인 것을 말한다. 객체지향적인 관점에서 보자면 변화하기 쉬운것이란 구체화 된 클래스를 의미하고, 변화하기 어려운 것은 추상클래스나 인터페이스를 의미한다. 따라서 DIP를 만족한다는 것은 의존관계를 맺을 때, 구체적인 클래스보다 인터페이스나 추상 클래스와 관계를 맺는다는 것을 의미한다.

DIP를 만족하면 '의존성 주입' 이라는 기술로 변화에 유연한 설계를 할 수 있다.  앞에 언급한 SoundPlayer 클래스 다시 보자.

우리는 setFile 클래스를 이용하여 실행하고자 하는 파일을 쉽게 바꿀 수 있다. 마찬가지로 새로운 오디오 파일 포맷(예를들면 FLAC)을 실행시키고자 한다면, 새로운 클래스(FLAC)를 만든 후 play 인터페이스를 상속받아 구현한 후 setFile 메소드를 이용하여 file 멤버 변수에 주입시키면 된다. 이와같은 기술을 '의존성 주입' 이라 한다.

5. Interface Segregation Principle (인터페이스 분리 원칙)

- 한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다. 하나의 일반적인 인터페이스보다는, 여러 개의 구체적인 인터페이스가 낫다. 이는 다시 말해서, 자신이 사용하지 않는 기능(인터페이스)에는 영향을 받지 말아야 한다는 의미이다.

한가지 예를 들어보자. 우리는 스마트폰으로 전화, 웹서핑, 사진 촬영 등 다양한 기능을 사용할 수 있다. 그런데 전화를 할 때에는 웹서핑, 사진촬영 등 다른 기능은 사용하지 않는다. 따라서 전화기능과 웹서핑 기능 사진 촬영 기능은 각각 독립된 인터페이스로 구현하여, 서로에게 영향을 받지 않도록 설계해야 한다. 이렇게 설계된 소프트웨어는 인터페이스 분리 원칙을 통해 시스템의 내부 의존성을 약화시켜 리팩토링, 수정, 재배포를 쉽게 할 수 있다. 

MVC 패턴

Model View Controller의 약자로 에플리케이션을 세가지의 역할로 구분한 개발 방법론이다. 아래의 그림처럼 사용자가 Controller를 조작하면 Controller는 Model을 통해서 데이터를 가져오고 그 정보를 바탕으로 시각적인 표현을 담당하는 View를 제어해서 사용자에게 전달하게 된다.

위의 모델을 웹에 적용하면

1. 사용자가 웹사이트에 접속한다. (Uses)

2. Controller는 사용자가 요청한 웹페이지를 서비스 하기 위해서 모델을 호출한다. (Manipulates)

3. 모델은 데이터베이스나 파일과 같은 데이터 소스를 제어한 후에 그 결과를 리턴한다.

4. Controller는 Model이 리턴한 결과를 View에 반영한다. (Updates)

5. 데이터가 반영된 VIew는 사용자에게 보여진다. (Sees)

Controller
사용자가 접근 한 URL에 따라서 사용자의 요청사항을 파악한 후에 그 요청에 맞는 데이터를 Model에 의뢰하고, 데이터를 View에 반영해서 사용자에게 알려준다. 

Model
일반적으로 CI의 모델은 데이터베이스 테이블에 대응된다. 이를테면 Topic이라는 테이블은 topic_model이라는 Model을 만든다. 그런데 이 관계가 강제적이지 않기 때문에 규칙을 일관성 있게 정의하는 것이 필요하다.

View
View는 클라이언트 측 기술인 html/css/javascript들을 모아둔 컨테이너이다. 

브라우저는 어떻게 렌더링 되는가? https://d2.naver.com/helloworld/59361

가상DOM과 DOM의 차이점

하나의 큰 HTML 문서를 DOM으로 가지는 상태에서 부품 컴포넌트를 조립하는 듯 다루는 개념이다.

부품들이 Virtual DOM에 해당한다. 리액트에서 뜯어서 모듈화로 불러오듯 말이다.

const VirtualDOM = () => {
	return
    	<div>
        	<p>Virtual DOM</p>
        </div>
};

위의 코드와 같이 함수를 불러 HTML 내용을 가져다 쓰는것을 말한다. 여기서 함수 VirtualDOM 가상돔 역할을 한다.

HTML에서 부분만 수정하는것을 가능하게 해준 방법이다.

컨텍스트 스위칭

프로세스 p0과 p1이 존재할때, p0이 cpu를 점유중이었고, p1이 대기중 상태에서 잠시후 p1이 실행되고 p0가 대기가 되는 상태가 찾아온다. 이때, p0이 실행중에 대기로 변하게 될 때는 작업해오던 내용을 PCB라는 곳에 저장하게 된다.

p0은 PCB에 저장해야하고 p1은 PCB에서 데이터를 가져와야한다. 이러한 과정을 컨텍스트 스위칭이라 한다.

컨텍스트 스위칭을 통해 멀티 프로세싱과 멀티 스레딩의 운영이 가능해진다.

PCB는 프로세스 생성시 메모리에 할당되는 공간이다.

컨텍스트 스위칭의 단점

위의 그림처럼 p0의 실행 상태에서 대기 상태가 될 때 바로 p1이 실행 상태가 되는것이 아니다. 그 사이에 cpu가 아무 작업을 하지 않는 공백상태가 존재하는데 이러한 문제로 컨텍스트 스위칭이 잦으면 오버헤드가 쌓여 성능이 떨어지게 되는 단점이 있다.

컨텍스트 스위칭 인터럽트

I/O interrupt, cpu 사용시간, 만료 자식 프로세스 fork 가 일어날때 인터럽트가 발생한다. 이러한것은 프로세스 스케줄러가 결정한다.

스레드가 프로세스보다 빠른 이유도 이것이 작용한다. 스레드는 스택을 제외한 영역을 프로세스에서 공유하고, PCB 스레드 고유의 것인 스택 영역만 저장하기 때문에 빠르다.

가상 메모리

RAM을 관리하는 방법의 하나로, 각 프로그램에 실제 메모리 주소가 아닌 가상의 메모리 주소를 주는 방식을 말한다.

멀티태스킹 운영 체제에서 흔히 사용되며, 실제 주기억장치보다 큰 메모리 영역을 제공하는 방법으로도 사용된다.

가상 주소 공간은 메모리 관리 장치(MMU)에 의해서 물리 주소로 변환된다. 이 덕분에 프로그래머는 가상 주소 공간상에서 프로그램을 짜게 되어 프로그램이나 데이터가 주메모리상에 어떻게 존재하는지를 의식할 필요가 없어진다. 대부분의 현대적 아키텍처와 운영 체제는 가상 메모리 기능을 제공한다.

가상 메모리는 크게 나누어 세그먼트(segment) 방식과 페이징 방식의 2종류가 있다. 

페이징 기법은 컴퓨터가 메인 메모리에서 사용하기 위해 2차 기억 장치로부터 데이터를 저장하고 검색하는 메모리 관리 기법이다. 즉, 가상기억장치를 모두 같은 크기의 블록으로 편성하여 운용하는 기법이다. 이때의 일정한 크기를 가진 블록을 페이지라고 한다. 주소공간을 페이지 단위로 나누고 실제기억공간은 페이지 크기와 같은 프레임으로 나누어 사용한다.

페이징 기법이 적용된 시스템에서 가상주소는 순서쌍 (p,d)로 나타낼 수 있다. p는 가상기억장치 내에서 참조될 항목이 속해 있는 페이지 번호이고, d는 페이지 p 내에서 참조될 항목이 위치하고 있는 곳의 변위이다.

어떤 프로세스가 현재 참조하고 있는 페이지가 주기억장치 내에 있다면 그 프로세스는 수행될 수 있다. 반대로 주기억장치 내에 없다면 그 해당 페이지를 보조기억장치로부터 읽어와서 페이지 프레임의 한 블록에 저장한다.

메모리 세그먼트 방식은 메모리 보호를 수행하는 가장 일반적인 방법 가운데 하나이다. 세그먼트를 사용하는 컴퓨터 시스템에서 메모리 위치를 참조하는 명령어 피연산자는 세그먼트와 그 세그먼트 안의 오프셋을 증명하는 값을 포함하고 있다.

트랜젝션

데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다.

1. 트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위이다.

2. 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업단위이다.

3. 하나의 트랜잭션은 Commit되거나 Rollback된다.

Atomicity(원자성)

1. 트랜잭션의 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 한다.

2. 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 모두가 완벽히 수행되지 않고 어느하나라도 오류가 발생하면 트랜잭션 전부가 취소되어야 한다.

Consistency(일관성)

1. 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환한다.

2. 시스템이 가지고 있는 고정요소는 트랜잭션 수행 전과 트랜잭션 수행 완료 후의 상태가 같아야 한다.

Isolation(독립성,격리성)

1. 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트랜잭션 실행중에 다른 트랜잭션의 연산이 끼어들 수 없다.

2. 수행중인 트랜잭션은 완전히 완료될 때까지 다른 트랜잭션에서 수행 결과를 참조할 수 없다.

Durablility(영속성,지속성)

1. 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 한다.

RDBMS 와 NoSQL 차이점

RDBMS

관계형 데이터베이스 관리 시스템입니다. RDBMS는 정해져있는 데이터 스키마에 따라 데이터베이스 테이블에 저장되며, 관계를 통한 테이블간 연결을 통해 사용됩니다. 이 때문에 RDBMS는 데이터 관리를 효율적으로 하기위해 구조화가 굉장히 중요 
장점으로는 정해진 스키마에 따라 데이터를 저장하여야 하기 때문에 명확한 데이터 구조를 보장. 각 데이터에 맞게 테이블을 나누어 데이터 중복을 피해 데이터 공간을 절약 단점으로 RDBMS 관계로 인한 시스템 복잡도를 고려 복잡 할수록 성능 저하

스키마

스키마는 데이터베이스의 구조와 제약 조건에 관한 전반적인 명세를 기술한 메타데이터의 집합이다.
스키마는 데이터베이스를 구성하는 데이터 개체, 속성, 관계 및 데이터 조작 시 데이터 값들이 갖는 제약 조건 등에 관해 전반적으로 정의한다.

NoSQL

스키마와 관계라는 개념이 없다.

장점으로 자유롭게 데이터를 추가가 가능하다. 이는 복잡한 테이블간의 관계를 형성하는 형태의 구조를 신경쓰지 않는다. RDBMS는 조인 등 복잡한 SQL구문으로 인한 문제가 있는데 NOSQL에서는 필요한 데이터가 보통 하나의 컬렉션에 있으며, 이는 자주 변경되지 않는 데이터에 큰 장점이 있다. 그리고 수평적 확장이 쉽다. 분산처리 목적 단점으로 컬렉션에 중복된 데이터가 저장이 가능

해시테이블, 해시 맵, 해시 표

컴퓨팅에서 키를 값에 매핑할 수 있는 구조인, 연관 배열 추가에 사용되는 자료 구조로 해시 테이블은 해시 함수를 사용하여 색인을 버킷이나 슬롯의 배열로 계산한다.

해시 함수 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수이다.

 

반응형

GPL(General Public License)


FSF의 창시자 리처드 스톨먼은 다섯 가지의 의무를 저작권의 한 부분으로서 강제한다.

1. 컴퓨터 프로그램은 어떠한 목적으로든 사용할 수 있다. 다만, 위법적 행위는 불가하다.
2. 컴퓨터 프로그램의 실행 복사본은 언제나 소스 코드와 함께 판매하거나 소스 코드를 무료로 배포해야 한다.
3. 컴퓨터 프로그램의 소스 코드를 용도에 따라 변경할 수 있다.
4. 변경된 컴퓨터 프로그램 역시 동일한 배포와 라이선스 조건을 따른다.

LGPL(Library/Lesser General Public License)


GPL 이상의 강력한 카피레프트 조건과 단순한 사용 허가를 위해 리처드 스톨먼이 발표한 라이선스이다. 대부분 소프트웨어 라이브러리에 쓰인다. GPL과 다른 점은 GPL이 적용된 라이브러리를 자유 소프트웨어를 만들 때만 사용해야 하지만 LGPL의 경우 독점 소프트웨어에서도 사용 가능하다. 다만, LGPL 라이브러리의 소스 코드를 수정했을 경우 2차 파생 저작물에 해당하므로 소스 코드를 반드시 제공해야 한다.

BSD(Berkeley Software Distribution)


버클리 캘리포니아 대학에서 배포하는 공개소프트웨어 라이선스로 누구나 수정할 수 있고, 수정한 것을 제한 없이 배포할 수 있다.

아파치(Apache)


아파치 소프트웨어 재단에서 만든 소프트웨어에 대한 라이선스 규정으로 누구든 자유롭게 아파치 소프트웨어를 다운 받아 부분 혹은 전체를 개인적 또는 상업적 목적으로 이용할 수 있다. 또한, 재배포 시에도 소스 코드 또는 수정 코드를 공개할 필요가 없다.
다만, 아파치 라이선스를 포함시키고 출처를 아파치 소프트웨어 재단으로 반드시 명시해야 한다.

MPL(Mozilla Public License)


모질라 재단에서 규정한 라이선스로 BSD와 GPL 라이선스의 혼합 성격을 가지고 있다. 코드 수정 시에는 코드 공개가 필수이지만, 다른 코드를 결합하여 만든 경우 MPL에 해당하지 않는 코드의 공개는 의무 하지 않는다.

MIT(Massachusetts Institue of Technology)


미 MIT 대학에서 자대 공대생을 위해 개발한 라이선스로 BSD를 기초로 하였다. 라이선스와 저작권 관련 명시만 지키는 정도로 간단하다. 누구나 수정할 수 있고, 수재배포 시에 소스 코드 비공개가 가능하다.

 

라이선스 이용 배포 소스 코드 수정 2차 저작물
소스 코드 공개
독점 소프트웨어와결합
GPL 무료 허용 가능 공개 불가능
LGPL 무료 허용 가능 공개 가능
BSD 무료 허용 가능 자유 가능
Apache 무료 허용 가능 자유 가능
MPL 무료 허용 가능 공개 가능
MIT 무료 허용 가능 자유 가능
반응형

설정된 umask의 값이 0022일 때 생성되는 파일의 허가권 값은?

답 : -rw-r--r--

 

리눅스 시스템 전체의 디스크 사용량을 표기하는 명령어

답 : df (diskfree) 
-h : 사람이 보기 편하게 용량 단위별 사용량 표기.
-T : type. 파일시스템의 유형을 표기.

 

특정 디렉토리에 대한 디스크 사용량을 표기하는 명령어
답 : du (diskusage) 
-h : 사람이 보기 편하게 용량 단위별 표기.
-b,k,m : 바이트, 킬로바이트, 메가바이트 등 각 단위별 표기.
-a : 디렉토리 내부의 각 파일 별 사용량을 표기.
-s : 전체 사용량. 하위디렉토리를 보여주지 않음.

 

삼바 파일 시스템을 마운트 할 때 지정하는 유형 값은?

답 : cifs 윈도우와 유닉스 환경을 동시에 지원하는 인터넷 표준 파일 규악 프로토콜

 

사용자에 대한 쿼터를 설정할 때 사용하는 명령은?

답 : edquota

 

리눅스에서 사용 가능한 파일시스템을 생성하는 명령

답 : mke2fs 주로 사용하는 파일 시스템인 ext2, ext3, ext4의 리눅스 파일 시스템을 생성한다.

-t 파일 시스템 지정

-j 저널링 파일 시스템으로 지정

-b 블록 크기 지정

-c 배드블록 검사 기능

 

aquota.user와 같은 쿼터 기록 파일을 생성하는 명령

답 : quotacheck 쿼터 설정을 확인하여 쿼터파일이 존재할 경우 검사하고 없을 경우 쿼터파일을 생성함.

aquota.user 사용자의 쿼터 관련 정보를 기록하는 파일

aquota.group 그룹의 쿼터 관련 정보를 기록하는 파일

 

sticky bit가 주어질때 원래 파일의

실행권한이 있는 'x'에 sticky bit를 설정하면 소문자't'

실행권한이 없는 '-'에 sticky bit를 설정하면 대문자'T'

 

mount를 다시 할때 명령어

답 : mount -o remount

마운트시 옵션을 명시하려면 -o를 준다.

-o ro 읽기전용

-o remount 재마운트

-o loop iso파일 마운트

-a /etc/fstab에 있는 파일 시스템 모두 마운트

-t 파일시스템을 지정 ex) -t ext4

 

파일 시스템의 최대 파일 크기를 순서대로

답 : ext2 < ext3 = ext4 < XFS

 

사용자가 로그아웃할 때 실행할 명령을 등록하는 파일

답 : ~/.bash_logout

 

최근 실행한 명령어 n개를 확인하는 명령

답 : history n

 

사용자가 입력한 명령어 이력을 출력 !

마지막에 사용한 명령실행 !!

n번째 명령 실행 !n

 

변경 가능한 쉘 목록을 출력

답 : /etc/shells

 

셸 사용시 기본으로 지원되는 언어를 한글에서 영문으로 변경할 때 사용하는 명령

답 : LANG=C

 

standalone 방식과 inetd 방식에 대한 비교

답 : inetd 방식이 standalone 방식보다 메모리 관리가 더 효율적이다.

 

standalone 데몬이 백그라운드에서 요청을 기다리고 요청이 들어오면 독립적으로 처리한다. 언제 요청이 들어올지 모르니 항상 서비스가 가능하며 별도의 매커니즘 없이 바로 클라이언트의 요청을 처리한다. 메모리 로드되어있기 때문에 시스템 자원을 많이 사용한다.

inetd 서비스 요청이 있을 때마다 inetd라는 슈퍼 데몬에 의해 해당하는 데몬을 실행해주는 방식으로 요청시에만 데몬이 실행되므로 시스템 자원 관리에 효율적이나 실행되야 하므로 속도가 느리다.

 

일반 사용자가 등록한 cron 작업 관련 파일이 저장되는 디렉터리는?

답 : /var/spool/cron

 

cron의 일정 등록

답 : 분 시 일 월 요일 파일명

 

ps 명령으로 동작중인 데몬을 확인하는 명령

답 : x

 

a 터미널과 연관된 프로세스 출력

u 프로세스의 소유자 기준 출력

x 데몬 프로세스처럼 터미널에 종속되지 않는 프로세스 출력

 

 

ps 명령의 상태 코드 중 작업은 완료되었으나 부모 프로세스로부터 회수되지 않았을 때 나타나는 상태 코드 값

답 : Z

 

Z 좀비 프로세스를 의미

T 정지된 상태

W paging 상태

 

kill 명령 실행 시 기본적으로 전송되는 시그널 번호

답 : 15

 

프로세스의 증가 없이 우선순위를 조정할 때 사용하는 명령

답 : renice

 

nice 초기 설정된 작업의 우선순위를 변경 ( 프로세스 생성 하며)

renice 이미 실행된 프로세스의 우선순위 변경

 

프로세스의 우선순위 변경을 위해 할당할 수 있는 NI값의 범위

답 : -20 ~ 19

 

지정된 시간에 작업을 예약할 때 사용하는 프로그램?

답 : cron, at

 

에디터에 따른 특징

답 : 문법 강조 기능 vim, vi

GUI 기반 에디터 gedit

자동 들여쓰기 기능 nano, vi

GPL 라이선스 pico, nano

 

워싱턴 대학에서 개발한 유닉스용 텍스트 에디터로 윈도우의 메모장처럼 간편하게 사용하도록 개발되었다.

2005년 개발이 중단되어 현재 리눅스 배포판에는 없다.

답 : pico

 

최근에 리눅스 배포판에 사용되는 GNU emacs는 리처드 스톨만이 emacs ()라는 ()에 기반을 두는 환경 설정 언어를 가지고 처음부터 다시 만든 버전이다.

답 : LISP

 

vi 에디터의 치환 기능으로 명령

ihd

ihd_linux

[ 명령수행 ]

linux

ihd_linux

답 : %s/\<ihd\>/linux/g

 

파일을 열어 커서를 2번째 줄로 위치하는 명령

답 : # vi +2 파일명

 

vi 에디터 자주 입력하는 단어의 약어를 설정

답 ab

abbreviation [약어] [문자열]

ab 입력시 등록된 약어들이 출력됨

 

소스 설치 과정에서 configure 작업으로 생성된 다양한 파일을 제거하는 명령

답 : make clean

 

타겟(target)과 의존성(dependencies)관련 작업을 수행한 후에 최종적으로 실행 파일을 만든다.

답 : make

 

dpkg 옵션 사용법

-i 패키지 설치 (install)
-l 설치된 패키지 출력 (list)
-I 패키지 파일에 대한 정보 출력 (info)
-c 패키지 파일에 포함된 파일 정보를 출력 (contents)
-L 패키지가 설치한 파일 목록을 출력 (listfiles)
-r 패키지를 제거하는데, 환경 설정 파일을 남겨둠 (remove)
-P 환경 설정 파일까지 전부 제거 (purge)
--unpack 환경설정은 하지 않고 패키지를 풀기만 함
--configure --unpack 옵션으로 풀린 패키지를 환경 설정할 때 사용

 

수세(SUSE) 리눅스에서 사용하는 패키지관리 기법

답 : yaST, zypper

 

저장소(repository) 기반 패키지 관리기법

답 : yum, zypper, apt-get

 

gzip으로 압축된 텍스트 파일의 내용을 확인하는 명령

답 : zcat

 

yum 관련 작업 이력을 출력하는 명령

답 : yum history

 

소스 파일 설치와 관련된 명령

답 : make, cmake, Makefile, configure

 

CUPS는 ()기반의 ()를 사용하고, ()프로토콜도 부분적으로 지원한다. 관련 명령어도 ()와 ()계열 모두 사용 가능하고, 사용자 및 호스트 기반의 인증을 제공한다.

답 : HTTP, IPP, SMB, BSD, System V

 

리눅스에서 프린트 관련 명령어는 BSD 계열과 System V 계열 명령어로 나눌 수 있다. BSD 계열 명령어에는 () 등이 있고, System V 계열 명령어에는 () 등이 있다.

답 : lpr, lpq, lprm / lp, lpstat, cancel

 

scanimage 명령을 사용하여 이미지를 스캔할 때, 기본적으로 적용되는 이미지 형식은?

답 : pnm

--format 옵션으로 pnm 과 tiff를 지정가능하다. 기본값 pnm

 

사운드 카드 제어 명령 alsactl옵션 설명

답 : -E 환경 변수를 설정한다.

-f 환경 설정 파일을 지정한다.

-i init을 위한 설정 파일을 지정한다.

 

1992년 Hannu Savolainen에 의해 개발

2007년 7월 Linux의 GPL 기반 라이선스로 소스 공개

2008년 4월 BSD 라이선스 기반으로 소스 추가 공개

리눅스 및 유닉스 운영체제에서 사운드 카드를 만들고 캡쳐하는 인터페이스

답 : OSS

 

XSANE 스캐너 프로그램 개발 시 기반이 된 라이브러리

답 : GTK+

 

eog - GNOME 데스크톱에서 제공하는 이미지 뷰어 프로그램
Totem - GNOME 데스크톱 기반 Movie Player
OKular - KDE 문서 뷰어 프로그램
ImageMagicK - 비트맵 이미지를 보여주고 생성 및 편집이 가능하도록 지원해주는 프로그램 패키지

GIMP - 이미지 편집 프로그램
Gwenview - KDE의 기본 이미지 뷰어
Dolphin - KDE용 파일 관리자

 

리눅스에서 사용되는 X Window System 개발을 초기부터 최근순서로

답 : XFree86 -> X.org Server -> Wayland

 

X서버에 가까운 가장 저수준의 X 클라이언트 라이브러리

답 : XCB

 

GUI 환경을 이용하기 위해 사용자에게 제공되는 인터페이스 스타일을 말한다. 아이콘, 창, 도구모음, 폴더, 배경화면 등을 제공한다.

답 : 데스크톱 환경

 

()는 C언어로 구현된 클라이언트 라이브러리로 X 서버와 대화를 해주는 역할을 한다. 이것을 대체하여 등장한 라이브러리는 ()로 크기가 작고 단순하며 확장성이 뛰어나다.

답 : Xlib, XCB

 

미네소타 대학에서 개발된 인터넷 기반의 문서 검색 시스템으로 텍스트 기반의 메뉴 인터페이스를 통해 정보 검색 기능을 제공한다. 터미널 환경을 기반으로 대량의 정보 검색 및 저장을 위해 사용되었다.

답 : GOPHER

 

단말기가 전송로의 신호유무를 조사하고, 다른 단말기가 신호를 송출하고 있는지 확인한다.

답 : CSMA/CD

 

전송 매체를 광섬유 케이블을 사용하여 설계된 링 구조의 통신망이다. 1982년 미국표준협회의 X3T9.5 커미터에서 표준화되었고, ISO 규격으로 승인되었다.

답 : FDDI

 

회사 내에 서버를 리눅스로 운영 중이고, 회사 내 개발자들 모두 리눅스를 사용하고 있다. 특정 리눅스 시스템에 공유 디렉터리를 생성하고 부팅과 동시에 손쉽게 접근할 수 있는 환경을 제공하려고 한다.

답 : NFS

 

패킷 교환방식의 특징

답 : 이론상 호스트의 무제한 수용이 가능하다.

 

네트워크 인터페이스 카드의 작동을 중지시키는 명령

답 : ifconfig eth0 down

 

로컬 시스템의 이더넷 카드의 MAC 주소를 확인하는 명령어

답 : ifconfig

arp는 연결된 다른 시스템의 MAC 주소 확인가능

 

IPv4 사설 IP 주소의 네트워크 개수

답 : A클래스 256*256*256

B클래스 256*256

C클래스 256

 

이동통신 분야의 5G 제정과 관련된 국제기구

답 : ITU

 

표현계층 : 데이터의 암호화와 해독, 코드와 문자 등을 번역하여 일관되게 데이터를 서로 이해할 수 있게함

전송계층 : 송신 프로세스와 수신 프로세스간의 연결 기능을 제공

세션계층 : 응용 프로그램 간의 통신을 관리하기 위한 방법과 동기화를 유지하는 서비스 제공

 

IP 주소 및 포트번호와 관련 있는 기구

답 : IANA

 

삼바 서비스 구성과 관련한것

답 : SMB, CIFS, NetBIOS

 

메일 서버 간의 메시지 교환을 위해 사용되는 프로토콜

답 : SMTP

 

웹키트 레이아웃 엔진을 이용해서 개발한 프리웨어 웹 브라우저로 웹키트에서 포크된 블링크 엔진을 사용한다.

답 : 크롬

웹키트만 사용 사파리

 

시스템 간의 파일을 주고받는 서비스와 관련있는 것

답 : SSH, NFS, FTP

 

물리적으로 존재하는 인터페이스가 아니라 가상으로 만들어진 네트워크 인터페이스 장치. 자체적인 ping 테스트 등 네트워크 디버깅에 사용된다.

답 : lo

 

시스템에서 사용할 DNS 서버의 주소를 등록하는 파일

답 : /etc/resolv.conf

 

다수의 중앙처리장치가 장착된 컴퓨터를 채널 본딩하고, 이 컴퓨터 수십 대를 묶어 하나의 시스템으로 구성

답 : 병렬 컴퓨터

 

지속적으로 운영 가능한 성질, 데이터 전송에 이상이 생길 시 백업으로 서비스 이어받도록 시스템 구성

답 : 고가용성 클러스터

 

VirtualBox에 대한 설명

답 : 라이선스는 GNU GPL을 따른다.

VMware의 VMDK 이미지를 지원

Microsoft Virtual PC 이미지 VHD를 지원

반응형

사용자 쿼터를 설정하기 위해 /etc/fstab에 설정하는 항목 값은?

답 : usrquota

 

fdisk 실행 살태에서 특정 파티션의 속성을 Raid로 변경하기 위해서는 () 명령을 누른 후에 ()키를 눌러서 설정한다.

답 : t, fd

t : 타입변경

n : 새로운 생성

fd : Linux Raid Autodetect

 

특수 권한인 Set-Bit가 설정된 파일은?

답 : /usr/bin/passwd

 

설정된 umask의 값을 확일할 때 사용하는 명령은?

답 : umask -S

 

/etc/fstab의 필드에 해당하는 값은?

답 : 장치명, 마운트 될 디렉터리, 파일 시스템 유형, 마운트 될 때의 옵션

 

CD-ROM 드라이브의 트레이를 여는 과정에서 명령어는?

답 : eject /dev/cdrom

 

/data 디렉터리를 포함하여 하위 디렉터리 및 파일의 소유권을 ihduser로 변경한다.

답 : chown -R ihduser /data

 

/tmp 디렉터리의 허가권을 확인하는 명령은?

답 : ls -ld /tmp

 

관리자 계정으로 ihduser의 로그인 셸을 변경할 때 수정하는 파일은?

답 : /etc/passwd

 

리눅스 시스템에서 사용하는 시그널 이름과 번호를 확인할 때 사용하는 명령은?

답 : kill -l

 

동작중인 웹 서버 데몬을 모두 종료시키는 명령은?

답 : killall httpd

 

프로세스를 중지 시키는 명령은?

답 : kill -9 프로세스번호

 

fork() 프로세스 복제, exec() 프로세스 대체

 

emace는 강력한 질의 및 치환 기능을 가지고 있다. () 키 입력 후에 () 키를 누르면 화면의 하단에 ()라는 프롬프트가 나타나면서 질의를 통한 치환을 진행 할 수 있다.

답 : esc, %, Query replace

 

pico에디터가 지원하는 기능

답 : 단락 정의, 맞춤법 검사, 복사 및 붙여넣기

 

yum 명령의 저장소 관련 파일들이 위치하는 디렉터리

답 : /etc/yum.repos.d

 

tar 파일에 관한 옵션

답 : cvf 새로운 아카이브 파일 tar 생성

rvf 아카이브된 파일의 마지막 부분에 파일 추가

tvf 아카이브 파일 안에 있는 목록 나열

xvf 압출 해제

 

압축의 효율성

<p답 : compress < gzip < bzip2 < xz>

 

소스(source) 설치 과정의 순서

답 : configure -> make -> make install

 

rpm의 설치 관련 옵션

답 : -Fvh 이전버전 패키지 있는 경우에 패키지 설치

-Uvh 패키지 업그레이드

-ivh rpm 패키지 설치

 

리눅스에서 프린트 관련 명령어는 BSD 계열과 System V 계열 명령어로 나눌 수 있다.

BSD 계열 명령어는 lpr, lpq, lprm, lpc

System V 계열 명령어는 lp, lpstat, cancle

 

프린팅 시스템인 CUPS의 데몬 환경 설정 파일은?

답 : /etc/cups/cupsd.conf

 

USB로 연결된 스캐너를 검색하기 위한 명령

답 : sane-find-scanner -v

 

스캐너 및 이미지 수정작업을 할 수 있는 XSANE를 실행하기 위한 명령

답 : xsane

 

X서버에 접속할 수 있는 클라이언트로 ip주소 192.168.12.22인 호스트만 지정하는 명령

답 : xhost + 192.168.12.22

 

텍스트 모드로 부팅된 상태에서 X 윈도를 실행하는 명령은

답 : startx

 

Using authority file 중략 /Xauthority

답 : xauth

 

access control enabled, only authorized clients can connect

답 : xhost

 

인터넷을 통해 원격지 컴퓨터상의 파일이나 서비스를 요청하는 표준 프로토콜로 TCP/IP 프로토콜 기반으로 사용한다.

답 : CIFS

 

잘 알려진 포트의 범위

답 : 0~1023

 

IPv4 클래스풀
A - Class : 0.0.0.0 ~ 127.255.255.255
B - Class : 128.0.0.0 ~ 191.255.255.255
C - Class : 192.0.0.0 ~ 223.255.255.255
A Class 앞자리 8bit : 0000 0000 --> 0
B Class 앞자리 8bit : 1000 0000 --> 128
C Class 앞자리 8bit : 1100 0000 --> 192
A Class 1비트 0
B Class 2비트 10
C Class 3비트 110

 

OSI 7계층  :  TCP/IP 계층
---------------------------------
7 응용       :   응용계층
6 표현       :
5 세션       :
---------------------------------
4 전송       :   전송계층
---------------------------------
3 네트워크   :   인터넷 계층
---------------------------------
2 데이터 링크:   네트워크 접속 계층
1 물리       :
---------------------------------

 

네트워크 인터페이스 카드의 물리적 연결 여부를 확인할 떄 사용하는 명령어

답 : ethtool

 

SSH 인증 파일의 경로

답 : /home/유저명/.ssh/authorized_keys

 

netstat 명령의 상태 값

답 : LISTEN -> SYN_SENT -> SYN_RECEIVED -> ESTABLISHED

3핸드쉐이크 : 대기 -> SYN -> SYN+ACK -> ACK

 

서버에 접속한 클라이언트의 IP주소 및 포트 번호를 확인할 때 사용하는 명령

답 : ss

 

물리주소를 알 수 있는 명령

답 : arp

 

시스템에 설정된 IP 주소를 확인하는 명령

답 : ip addr show

 

FTP 프로토콜에서 사용하는 포트번호 정보를 확인하려고 한다.

답 : /etc/services

 

정부 간 국제 규약에 의해 설립된 국제기구 등 특수한 자격조건을 갖춘 기관에서 사용할 수 있는 도메인

답 : int

 

>인터넷 릴레이 챗은 실시간 채팅 프로토콜

>답 : IRC

 

>()는 게스트 운영체제를 설치하지 않고 서버 운영에 필요한 프로그램과 라이브러리만 ()라고 부르는 이미지로 만들어서 프로세스처럼 동작시킨다.

답 : Docker, Container

 

임베디드 리눅스

답 : 디바이스 드라이버 프레임 워크가 복잡하다.
사용자 모드와 커널 모드 메모리 접근이 복잡하다.
소스가 공개되어 있는 관계로 변경 및 재배포가 용이하다.

 

다수의 운영체제를 하나의 컴퓨터 시스템에서 가동할 수 있게 하는 소프트웨어는?

답 : 하이퍼바이저

반응형

사용자 쿼터를 설정하는 단계의 명령 순서는? (쿼터 : 사용자별 용량 제한)

답 : quotacheck -> edquota -> quotaon

 

quotacheck : 쿼터 사전 준비 및 점검

edquota : 쿼터 설정

quotaon : 쿼터 사용 활성화

 

다음과 같은 허가권 변경의 명령어는?

drwxrwx---.

drwxrwx--T.

답 : chmod o+t

 

다음 결과를 위한 명령어는?

답 : edquota

 

다음 조건에 해당하는 명령으로 알맞은 것은?

lin.txt 파일의 소유권은 ihduser, 그룹 소유권을 admin으로 변경한다.

답 : chown ihuduser.admin lin.txt

 

디렉터리에 부여되는 x 권한에 대한 설명은?

답 : 해당 디렉터리의 내부로 접근할 수 있다.

 

다음 결과에 해당하는 명령어는?

답 : fdisk

 

다음 () 안에 들어갈 내용으로 알맞은 것은?
mount -o () CentOS-6.10-i386.bin-DVD.iso
/media

답 : loop

 

마운트된 /home2를 해제시키는 과정에서 ()안에 들어갈 명령은?
() /home2

답 : umount

 

파일이나 디렉터리의 소유권을 확인하는 명령은?

답 : ls

 

umask 명령의 결과가 다음과 같을 때 생성되는 파일의 허가권 값은? (umask : 기본권한 설정)

umask -S

u=rwx, g=rwx o=rx

답 : -rwxrwxr--

 

r4 w2 x1 파일 기본권한 666 디렉터리 기본권한 777

문제에서 변경 775는 디렉터리 기본권한에서 -2 파일에서 -2

 

사용자가 로그인 직후 부여된 셀을 확인하는 방법은?

답 : ps 명령 실행, echo $SHELL, grep 계정명 /etc/passwd 명령 실행

 

다음에 해당하는 명령은?

Changing shell for posein.

password:

New shell [/bin/bash]: /bin/bash

Shell changed.

답 : chsh

 

다음 해당하는 셸은?

1978년 버클리 대학의 빌 조이가 개발한 것으로 히스토리 기능, alias 기능, 작업 제어 등의 유용한 기능을 포함시켰다.

답 : csh

 

사용 가능한 셸의 목록을 확인하는 명령으로 알맞은 것은?

cat /etc/shells

 

개발된 지 가장 오래된 셸은?

bourne shell

 

다음 설명에 해당하는 환경변수로 알맞은 것은?

사용자가 로그인한 후 일정시간 동안 작업을 하지 않을 경우에 로그아웃시키려고 한다.

답 : TMOUT

 

ps aux 명령 실행 시 확인할 수 있는 것은?

총 CPU 사용시간을 알 수 있다.

프로세스의 식별 번호를 알 수 있다.

현재 프로세스 상태코드를 알 수 있다.

(현재 프로세스 정보를 %로 상태까지 상세히 알려준다)

 

시그널의 발생 종류는?

SIGINT = ctl+c 시그널

SIGTERM = 프로세스 종료 시그널

SIGSTOP = 프로세스 중지 시그널

SIGTSTP = ctl+z 시그널

 

top 실행상태에서 프로세스와 cpu 항목을 on/off 하는 명령어

답 : t

 

top 실행상태에서 메모리 항목을 on/off 하는 명령어

답 : m

 

top 실행상태에서 프로세스를 죽이는 명령어

답 : kill

 

프로세스에 관한 설명 

init 프로세스는 모든 프로세스의 부모 프로세스이다.

exec는 원래 프로세스의 메모리에 새로운 프로세스의 코드를 덮어씌운다.

fork는 새로운 프로세스를 위해 메모리를 할당 받아 복사본 형태로 실행한다.

보통 명령어 실행하면 fork 형태로 수행

 

다음을 수행하기 위한 명령어는?

저장된 crontab 설정 파일을 삭제하기 전에 사용자에게 확인한다.

답 : crontab -ir

 

다음 조건으로 cron을 이용해서 일정을 등록할 때 알맞은 것은?

매주 월요일과 목요일 오전 10시에 점검 스크립트인 /etc/check.sh가 실행되도록 설정한다.

0 10 * * 1,4 /etc/check.sh

 

nohup 명령에 관한 설명은?

사용자가 작업 중인 터미널 창을 닫아도 백그라운드로 보내진 작업은 유지된다.

 

다음 top명령에 관한 설명은?

top -d 1 -p 8080

-d옵션을 사용하여 1초 간격으로 상태를 갱신한다.

프로세스의 상태뿐만 아니라 cpu, 메모리, 부하 상태 등을 확인할 수 있다.

실행 상태에서 다양한 명령을 입력하여 프로세스 상태를 출력하거나 제어할 수 있다.

 

유닉스 계열 시스템의 대표적인 편집기는 vi 이다. vi에 추가 기능을 대폭 강화하여 만든 편집기는 vim이며, 이를  GUI 기반으로 개발한 편집기는 gVim 이다.

 

다음 설명의 에디터 종류는?

워싱턴 대학의 Aboil Kasar가 개발한 유닉스 기반의 텍스트 에디터로 기본 인터페이스는 윈도우의 메모장과 유사하여 매우 단순하다. 지원되는 기능으로는 쉬운 복사 및 붙여넣기, 맞춤법 검사, 단락 정의 기능 등이 있다.

답 : pico

 

소스 설치 과정에서 디렉터리를 지정하는 단계에서 ()에 들어갈 내용은?

./configure \

()=/usr/local/apache

답 : --prefix

 

소스 설치 기법으로 cmake를 이용하는 프로그램으로 알맞은 것은?

답 : Mysql

 

인텔 계열 cpu에서 사용 가능한 레드 햇 리눅스의 패키지 파일 형식

답 : vsftpd-2.2.2-24.el6.i686.rpm

 

압축된 tar 파일을 푸는 과정이다. () 내용은?

tar () php-7.3.11.tar.xz

답 : jxvf

 

rpm 명령어 () 안에 알맞은 내용

rpm () vsftpd

S.5...T. c /etc/vsftpd/vsftpd.conf

답 : -V

-V 옵션은 패키지 검증 옵션

 

데비안 리눅스에서 사용하는 패키지 관리기법

답 : apt

apt-get

dpkg

 

동일한 소스 파일을 묶어서 압축했을 때 파일의 크기가 가장 작게 생성되는 파일은?

답 : .xz 는 가장 최근 배포된 것으로 압축률 높다.

 

yum을 이용해 문자열이 있는 패키지를 찾아보는 과정이다 ()에 올바른 것은?

yum () telnet

답 : search

 

scanimage 명령어 수행의 결과는?

답 : 스캔한 이미지를 scan.log 가로 150mm 세로 180mm의 파일로 저장한다.

 

네트워크 프린터를 설정하기 위한 프로토콜은?

답 : IPP

LPD

HTTPS

 

네트워크 연결 저장 장치와 백업 장치간에 데이터를 전송하기 위한 프로토콜은?

답 : NDMP

 

USB 및 SCSI로 인식된 디바이스의 경로는 어디로?

답 : /dev/아래

 

다음에서 설명하는 프린팅 시스템으로 알맞은 것은?

- 애플이 개발한 오픈 소스 프린팅 시스템

- HTTP 기반의 프로토콜을 사용

- BSD System V 명령어 모두 사용 가능

답 : CUPS

 

읍악 파일을 추출할 때 사용하는 명령은?

답 : cdparanoia

 

C언어로 구현된 Xlib의 기능을 포함하는 고수준의 라이브러리는?

답 : Xt, Xaw, FLTK, Tk

 

데스크톱 환경에 대한 설명

답 : GNOME 3 부터는 Mutter라는 윈도 매니저를 사용한다.

 

디스플레이 매니저의 설명

답 : 디스플레이 매니저는 사용자 이름과 암호가 유효한 값일 때 세션을 시작한다.

 

괄호안에 들어갈 내용은?

이 프로젝트는 2004년에 시작되어, 기존에 사용되던 프로젝트의 라이선스 정책 변화로 인하여 관련 개발자들 대부분이 이 프로젝트에 합류하였고, 현재 리눅스를 비롯하여 유닉스의 대부분이 이 프로젝트에서 개발된 ()를 사용하고 있다.

답 : X.org

 

다음의 X클라이언트의 설명?

export DISPLAY="192.168.10.55:1.2"

답 : X클라이언트 프로그램을 192.168.10.55의 두 번째 실행된 X서버의 세 번째 모니터로 전송한다.

 

다음에 대한 설명은 무엇인가?

X윈도우 환경에서 윈도우의 배치와 표현을 담당하는 시스템 소프트웨어를 말한다. 대부분 데스크톱 환경 구성에 도움을 주기 위해 설계되었다. 윈도우의 외양을 변화시키고 다양한 유틸리티를 제공한다.

답 : 윈도우 매니저

 

X윈도우의 설명

X 윈도우는 서로간의 통신을 위해 X Protocol을 사용한다. X 윈도우는 기본 구조가 네트워크 기반이기 때문에 로컬의 사용자가 키보드나 마우스로 입력하면 TCP 포트 6000번을 통해 전달한다.

 

evince의 설명

멀티 페이지 문서 뷰어 프로그램으로 PDF, PS, EPS 등의 형식을 지원한다.

 

네트워크 주소값 계산

/24 /25 /26 

나누기 1, 2, 4 이런식으로 계산 두번째 네트워크 주소가 그 값이 된다. 0, 128, 164

 

사설 IP주소 대역

10.0.0.0 A클래스 10.0.0.1~10.255.255.254

172.16.0.0 B클래스 172.16.0.1~172.31.255.254

192.168.0.0 C클래스 192.168.0.1~192.168.255.254

 

다음 OSI 계층 설명은?

상위 계층으로부터 전달받은 데이터에 인접한 장치의 물리 주소인 MAC 주소, 데이터의 정확한 송수신을 위한 규정이나 통신 회선 접속의 확인 등과 같은 전송 제어의 역할을 수행한다.

답 : 데이터링크 계층

 

OSI 7 계층의 프로토콜 데이터 단위를 하위 계층부터 순서대로 나열

답 : 비트 - 프레임- 패킷 - 세그먼트 - 데이터

 

T568B 배열의 순서

답 : 흰/주, 주, 흰/녹, 파, 흰/파, 녹, 흰/갈, 갈

 

메일 서버에 도착한 메일을 사용자 컴퓨터에서 확인할 때 사용하는 프로토콜의 조합

답 : POP3, IMAP

 

다음과 같은 설정이 저장되는 파일은?

NETWORKING=yes

HOSTNAME=www

답 : /etc/sysconfig/network

 

로컬 네트워크에 있는 다른 시스템에 장착된 이더넷 카드의 MAC 주소를 확인할 때 사용하는 명령은?

답 : arp

 

다음의 설명으로 알맞은것?

1984년 썬 마이크로시스템즈사에서 개발한 프로토콜로 네트워크 상에서 다른 컴퓨터의 파일 시스템을 마운트하고 공유하여 상대방의 파일 시스템 일부를 마치 로컬시스템의 디렉터리인 것처럼 사용할 수 있게 해준다.

답 : NFS

 

메일 서버간의 메시지를 교환할 때 사용되는 프로토콜은?

답 : SMTP

 

DQDB 프로토콜을 제정한 국제기구는?

답 : IEEE

 

다음의 인터넷 서비스 내용은?

텍스트 형태의 기사들을 전 세계의 사용자들이 공개된 공간에서 주고받으며 토론할 수 있는 자유 게시판 서비스

답 : 유즈넷

 

다음 프로토콜의 설명은?

1960년대 말에 미국방성(DARPA)에서 연구를 시작하였고, 1980년대 초에 공개된 프로토콜로 컴퓨터 기종에 상관없이 정보 교환이 가능하게 해주는 통신 프로토콜이다.

답 : TCP/IP

 

다음의 LAN 구성 방식은?

중앙에 위치한 중앙 컴퓨터가 각각의 컴퓨터와 통신하는 방식으로 중앙의 제어기를 중심으로 모든 제어기는 Point-to-Point 방식으로 연결한다.

답 : 스타형

 

다음의 인터넷 서비스는?

Trying

Connected to

Escape character is '^]'.

CentOS release 6.10 (Final)

Kernel 2.6.32-754.el6.i686 on an i686

www login:

password:

답 : telnet

 

다음이 설명하는 용어는?

웹이나 컴퓨터 네트워크 상에 퍼져있는 특정 정보 자원의 종류와 위치가 기록되어 있다.

답 : URL

 

리눅스에서 사용 불가능한 웹 브라우저는?

답 : 사파리

 

다음 운영체제는?

리눅스 커널에서 구동되는 모바일 운영체제로 Palm OS를 계승한 소프트웨어이다. 현재는 LG전자가 인수하여 개발중이다.

답 : webOS

 

고계산용 클러스터의 설명

답 : 병렬 컴퓨터라고 부른다.

베오울프 클러스터라고도 부른다.

슈퍼컴퓨터에서 사용되는 방식이다.

 

다음 설명은?

2005년 이탈리아 한 회사에서 하드웨어에 익숙지 않은 학생들을 위해 오픈 소스 기반으로 한 단일 보드마이크로컨트롤러이다. 완성된 보드와 관련 개발 도구 및 환경을 제공한다.

답 : Arduino

반응형

+ Recent posts