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 ; Прерывание
Последовательность:
  • Запрос прерывания
  • Процессор доводит выполнение текущ программы до точки в кот можно прервать. На шине выставляет подтверждене прерывания. Др. прерывания блокируются
  • Устройство передает число идентифицирующие данное устройство - номер прерывания
  • Процессор сохраняет в стеке активной задачи счетчик комманд и регистр флагов
  • Устанавливается привилег. режим центр. процессора. Управление передается на точку входа обработчика прерываний (процедуры операционной системы). Адрес процедуры в спец. области памяти

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

Docs

http://www.nasm.us/docs.php

x64
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

./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