Intro
Quickly Setting up Awesome with Gnome
Change keyboard maps
Nov 27, 2013
Nov 15, 2013
Введение в операционные системы - Столяров А.В.
http://www.stolyarov.info
Мультизадачность
Мультизадачность
- Пакетный режим
- Режим разделения времени
- Планирование в режме реального времени
Требования к аппаратуре
Прерывания
- Аппаратные (внешние)
- Внутренние (в процессоре на исключительные ситуации, например деление на ноль)
- Программные (системные вызовы)
Эмуляция физического компьютера возможна за счет эмитации прерываний.
Проблемы решаемые менеджером памяти:
- защита процессов др. от др. и от ОС. управление аппаратной защитой памяти
- откачка при недостатке объема опертивной памяти
- дублирование данных при, например, запуске нескольких копий программы
- перемещение кода
- фрагментация
Виртуальная память
Драйверы (в ядре, при запуске, динамич. загружаемые), контроллеры как средства абстрагирования, буфера ввода-вывода (асинхронный режим)
Ввод-вывод
Директория (имена файлов и их номера)
Файл. Индексный дескрптор (i-node или index node) - вся информация (права, дата...)
Ссылка (счетчик ссылок на i-node)
Семафоры и мьютексы
Мьютексы lock() unlock()
Семафоры up() увелич. некот знач. на 1; down()
Должны быть реализоваы атомарно
Графический интурфейс
Х-сервер
Nov 13, 2013
Программирование на языке ассемблера NASM для ОС Unix - Столяров А.М.
http://www.stolyarov.info/books/asm_unix
Кольца защиты процессора
Макросы
Аппаратная поддержка мультизадачности:
Кольца защиты процессора
nasm -f elf hello.asm
ld -m elf_i386 hello.o -o hello
./hello
%include "stud_io.inc"
global _start
section .data
string resb 20
count resw 256
x resd 1
fibon dw 1, 1, 2, 3, 5, 8, 13, 21
msg db "Hello World"
section .bss
set512 resd 16
section .text
_start: mov eax, 0
mov eax, ebx
mov eax, [count] ; значение count в eax
mov eax, count ; адрес count в eax
mov eax, [ebx] ; из ячейки памяти с адресом ebx
; Арифметика
add edx, 12
sub [x], ecx
inc eax
dec eax
; Безусловные переходы
jmp some_label
jmp eax
jmp [eax]
jmp short some_label
; Условные переходы
some_label: cmp eax, 5
je equal_label
jl less_label
jng not_greater_label
jnz some_label
; Циклы
mov ecx, 100
mov esi, array
mov eax, 0
lp: add eax, [esi]
add esi, 4
loop lp
; Побитовые xor, or, and
xor eax, eax
; Операции сдвига shr (shift right), shl (shift left)
shr edx, 5
Стек используется при вызовах подпрограмм для хранения адресов возврата, для передачи фактических параметров в подпрограммы и для хранения локальных переменных
push eax
pop eax
pushad ; push all doublewords
popad ; для всех регистров: EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI
pushfd ; для регистра флагов EFLAGS
popfd
Подпрограммы
; fill memory (edi=address, ecx=length, al=value)
fill_memory:
jecxz fm_q
fm_lp: mov [edi], al
inc edi
loop fm_lp
fm_q: ret
; Использование
mov edi, my_array
mov ecx, 256
mov al, '@'
call fill_memory
push ebp
mov ebp, esp
mov esp, 16 ; 16 - объем памяти под локальные переменные
; после подпрограммы
mov esp, ebp
pop ebp
ret
Макросы
%macro pcall1 2 ; 2 кол-во параметров
push %2
call %1
add esp, 4
%endmacro
; вызов
pcall1 proc, eax
%define arg1 ebp+8
; вызов
mov eax, [arg1]
%ifdef DEBUG_PRINT
PRINT "Entering"
%endif
Макросимвол можно определить как ключ коммандной строки
nasm -f elf -dDEBUG_PRINT hello.asm
Операционная система
- аппарат прерываний
- защита памяти
- привилегированный и ограниченный режим работы центрального процессора
- таймер
int 80h ; Прерывание
Последовательность:
- Запрос прерывания
- Процессор доводит выполнение текущ программы до точки в кот можно прервать. На шине выставляет подтверждене прерывания. Др. прерывания блокируются
- Устройство передает число идентифицирующие данное устройство - номер прерывания
- Процессор сохраняет в стеке активной задачи счетчик комманд и регистр флагов
- Устанавливается привилег. режим центр. процессора. Управление передается на точку входа обработчика прерываний (процедуры операционной системы). Адрес процедуры в спец. области памяти
Labels:
asm,
book,
nasm,
прерывания,
стек
Nov 12, 2013
Nasm "Hello world"
PC Assembly Language is resource on assembly programming. It's modern, free, and covers a variety of topics. It uses NASM and the examples are available for Linux (among several other systems).
hello-world-nasm-linux
64-bit-hello-world-in-linux-assembly-nasm
x64
Gentle Introduction to x86-64 Assembly
64-bit Linux system call numbers
Intel® 64 and IA-32 Architectures Developer's Manual: Vol. 2B
hello-world-nasm-linux
64-bit-hello-world-in-linux-assembly-nasm
Docs
http://www.nasm.us/docs.phpx64
Gentle Introduction to x86-64 Assembly
64-bit Linux system call numbers
Intel® 64 and IA-32 Architectures Developer's Manual: Vol. 2B
RabbitMQ different verisons on Centos 5.9 in Virtualbox
Download Erlang source: https://www.erlang-solutions.com/downloads/download-erlang-otp
Download RabbitMQ required server version(s): http://www.rabbitmq.com/releases/rabbitmq-server/
Configure each instance
Configure port forwarding in VirtualBox
./configure && make && su -c "make install"
Download RabbitMQ required server version(s): http://www.rabbitmq.com/releases/rabbitmq-server/
Configure each instance
cd <RABBIT_PATH>/sbin
rabbitmq-plugins enable rabbitmq_management
rabbitmqctl add_user <RABBIT_USER> <RABBIT_PASS>
rabbitmqctl add_vhost /<RABBIT_VHOST>
rabbitmqctl set_permissions -p /<RABBIT_VHOST> <RABBIT_USER> ".*" ".*" ".*"
rabbitmqctl set_user_tags <RABBIT_USER> administrator
./rabbitmq-server
Configure port forwarding in VirtualBox
Labels:
centos,
erlang,
port forwarding,
rabbitmq
Nov 11, 2013
The Social Tech Guide
http://www.socialtech.org.uk/ - The World’s Most Inspiring Social Innovations Using Digital Technology
Subscribe to:
Posts (Atom)