CSE
-
[Linux] 3. 리눅스 스케줄링CSE/Linux 2015. 8. 17. 14:32
리눅스 운영체제는 프로세스나 후에 설명될 스레드에 대해 선점(Preemption) 스케줄링 기법을 제공합니다. 선점 스케줄링은 시분할 시스템에서 한 프로세스의 CPU 독점을 방지하기 위해 주어지는 타임 슬라이스(Time slice)가 소진되었거나, 인터럽트나 시스템 호출 종료 시에 더 높은 우선 순위의 프로세스가 발생하였음을 알았을 때 현 실행 프로세스로부터 강제로 CPU를 회수하여 다른 프로세스에 할당하는 것을 말합니다. 이러한 선점 스케줄링을 사용하는 대부분의 운영체제는 보통 CPU 효율의 극대화, 프로세스에 대한 빠른 응답 및 공평성의 향상 등을 위해 여러 가지 스케줄링 정책과 동적 우선순위 기법을 사용합니다. 3.1 성능 향상을 위한 선점 스케줄링의 고려 사항 다음은 시분할 선점 스케줄링에서 시스..
-
[Linux] 2-1. 프로세스와 스레드(Process & Thread)CSE/Linux 2015. 8. 12. 16:44
2.3 시스템 호출과 프로세스의 상태 전이 본 절에서는 일반적인 입출력 시스템 호출 및 인터럽트 처리와 관련된 프로세스의 상태 변이를 알아보기 위해 프로세스의 시스템 호출부터 복귀까지의 과정을 입출력인 디스크 파일 입력의 예로 설명하도록 하겠습니다. 사용자가 요구한 입출력이 완료되기까지는 커널 내의 관련 시스템 호출 처리 루틴뿐만 아니라 디바이스 드라이버의 주축인 인터럽트 처리 루틴이 서로 유기적인 관계를 맺고 동작합니다. 이 과정에서는 입출력 완료 대기에 의한 프로세스 대기 상태로의 전이, 문맥 교환이 발생하고, 디스크 입출력을 최소화하기 위한 커널의 버퍼링 기법도 등장합니다. 이러한 처리 과정은 커널의 두 가지 대표적 구성 요소인 시스템 호출과 인터럽트 처리의 관계를 이해하는 중요한 부분이 됩니다. ..
-
[Linux] 2. 프로세스와 스레드(Process & Thread)CSE/Linux 2015. 8. 11. 19:46
프로세스(Process)란 일반적으로 현재 실행 중인 프로그램을 말하며 태스크(task)라는 일반적인 용어로도 사용됩니다. 실행 중인 프로그램의 의미를 가지는 프로세스는 실행되는 동안 커널이 가진 자원(CPU, Memory, Devices, Files)을 독자적으로 차지해야 할 경우가 많습니다. 따라서 프로세스는 항상 커널의 자원을 차지하기 위해 경쟁하고 커널은 이들에게 효율적으로 자원을 스케줄링하여 할당하고 회수하는 역할을 합니다. 프로세스는 커널이 가진 여러가지 자원의 할당 및 사용을 위해 커널 함수를 호출해야 하는데, 이러한 커널 함수들을 일반적으로 시스템 호출(System call)이라 합니다. 따라서 동작 중인 컴퓨터 시스템은 커널과 프로세스 간의 관계에 의해 모든 것이 결정되는 것이라 볼 수 ..
-
[Linux] 1. 리눅스 활용을 위한 기본 지식CSE/Linux 2015. 8. 10. 15:08
1.1 리눅스의 사용자 계정 리눅스(Linux)는 다중 사용자를 위한 운영체제입니다. 여러 사용자가 사용하는 시스템은 비적절한 접근으로부터 시스템을 보호해야 합니다. 따라서 사용자는 사용자 식별자(username or id)와 패스워드 입력에 의한 접근 허가를 받아야 합니다. 사용자의 이름과 패스워드는 /etc/passwd 파일에 수록되어 있습니다. 패스워드의 경우는 암호화되어 저장되어 집니다. 접속한 사용자의 id는 사용자가 실행시키는 여러 프로그램(프로세스)들에 대해 시스템의 자우너 사용 때의 권한을 결정하는 요소가 됩니다. 일반 사용자 이외에 시스템의 관리를 위해 시스템 자원에 모두 접근할 수 있는 특수 사용자(super user)가 있는데, 이는 root라는 이름으로 로그인하게 됩니다. 사용자들은..
-
[Ubuntu] 우분투에서 카톡 하기 ! - KakaotalkCSE/Ubuntu 2015. 8. 10. 12:02
PC 카톡을 애용하는? 저에게 우분투를 쓸 때 PC 카톡의 부재는 이루 말할 수 없는 슬픔이 찾아옵니다... 그.래.서. 우분투에서도 PC 카톡을 사용할 수 있게 포스팅을 진행해 보도록 하겠습니다 !! 구성 환경은 Ubuntu 14.04 x64 환경에서 진행하였습니다!! 순 서 ! 1. Playonlinux 를 설치합니다 !! sudo apt-get install playonlinux 2. Playonlinux 를 실행합니다 !! 초기 화면에서 '설치'버튼 클릭! 3. 'Install a non-listed program' 클릭 !! 4. 다음을 누른 뒤 아래 그림대로 따라해주세요 ! Install a program in a new virtual drive 선택 후, 다음 ! 대충 여느 문구 써주시면 됩..
-
[C Language] 43. 포인터 - 매개변수 처리 총정리CSE/C Language 2015. 8. 10. 11:14
1. 매개변수가 1차원 배열인 경우 1차원 배열이 int 형인 경우 1234567891011121314151617181920212223242526272829/* * parameter.c * * Created on: 2015. 8. 10. * Author: Yeonsu */ #include void print_temp(int *, int); int main(void) { int sum; int tmp[] = { 11, 42, 19, 82, 57 }; print_temp(tmp, sizeof(tmp) / sizeof(int)); return 0;} void print_temp(int *tmp, int length) { int i; for (i = 0; i
-
[Java] 3. 선택문CSE/Java 2015. 8. 9. 14:10
3.1 관계 연산자와 논리 연산자 선택문은 조건을 사용하며, 일반적으로 관계 연산자와 논리 연산자를 사용합니다. 3.1.1 관계 연산자 관계 연산자(비교 연산자)는 두 값을 비교하는 연산자로 아래 연산자를 제공합니다. 을 제외하고는 두 개의 문자(=를 우측)를 조합하여 표기합니다. =>, = y x의 값이 y보다 크면 참, 아니면 거짓 = y x의 값이 y보다 크거나 같으면 참, 아니면 거짓 == x == y x의 값이 y와 같으면 참, 아니면 거짓 != x != y x의 값이 y와 다르다면 참, 아니면 거짓 관계 연산자는 우선순위가 사칙 연산자 보다 낮습니다. 연산을 할 때는 양 쪽의 피연산자 자료형이 같아야 합니다. 자료형이 다르면 캐스트 연산자를 사용하여 양 쪽의 자료형을 일치시켜준 뒤 연산을 해야..
-
[Java] 2-1. 자료형과 연산자CSE/Java 2015. 8. 6. 14:10
2.7 콘솔 입력 2.7.1 BufferedReader 클래스 자바에서 입력 콘솔(키보드)은 System.in을 통해 입력을 합니다. BufferedReader 클래스는 문자 단위로 입력할 수 있는 문자 스트림을 생성합니다. BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedReader와 Scanner의 차이는 무엇일까요? 입력 값을 읽는 것은 같지만 자바 초창기부터 제공한 BufferedReader 클래스의 read 메서드나 readLine 메서드로 읽는 값을 무조건 String으로 반환합니다. BufferedReader 클래스의 기능을 업그레이드한 자바 1.5 이후부터 제공하는 Scanner 클래스는 입력..