Cyjon OS

Odpowiedz Nowy wątek
2015-04-10 20:41
49

Programowanie może być ciekawe.

W pełni 64 bitowe jądro systemu jak i oprogramowanie oraz system plików.
W języku asemblera.

Wszystkie programy pisane własnoręcznie, nie są przenoszone z systemów GNU/Linux (tylko na nich wzorowane - wizualnie :)).

user image

Edytor tekstu "nano":

user image

Aby daleko nie szukać, poniżej paczka z obrazem systemu.

Aktualizacja 21.12.2015:

user image

Aktualizacja 3.1.2016:

user image
user image

Aktualizacja 5.1.2016:
Wykonałem trochę modyfikacji i teraz działa znacznie lepiej (znalazłem parę błędów) jak i się prezentuje.

user image

Aktualizacja 27.05.2016:
Obsługa protokołu ARP, IP i ICMP !

user image

Aktualizacja 11.06.2016:

Udało mi się nawiązać połączenie przez przeglądarkę, "stos" tcp/ip przyjmuje tylko jedno połączenie ;)
Teraz muszę wysłać dane do serwera httpd wraz z identyfikatorem połączenia.
Serwer wyśle odpowiedź do klienta(przeglądarka) i demon_tcp zakończy połączenie, oczekując na następne xD
user image

Aktualizacja 30.06.2016:

Udało się, mam serwer WWW, stos TCP/IP i system operacyjny... a wszystko w asemberze :D
user image

Aktualizacja 28.12.2016:

Niewiele zmieniło się z zew. punktu widzenia, ale pod maską jest już pełna obsługa wirtualnych konsol!
Powłoka otrzymała możliwość buszowania po systemie plików (w tym i każdy inny proces).
title

Aktualizacja 15.01.2017:

title
title
title

Aktualizacja 20.02.2017:

title

Aktualizacja 22.02.2017:

Aktualizacja 21.03.2017:

title

Aktualizacja 23.03.2017:


edytowany 15x, ostatnio: akasei, 2017-03-23 14:22
Unikałbym stosowania istniejących nazw własnych programów. Tak tylko piszę. Ogólnie bardzo fajnie. :) - Tacet 2015-04-11 00:24
Tak, zgadzam się... dopóki się z tym nie panoszę na lewo i prawo, mogę je stosować. Nazwy te zastosowałem by osoby postronne szybko się odnalazły. - akasei 2015-04-11 00:34
Powoli przepisuję "uproszczony" kod jądra systemu do GitHub, dodając masę komentarzy. - akasei 2015-04-11 18:00
Plik system.zip powyżej, nieaktualny. Najnowszą wersję zawsze można pobrać z GitHub. - akasei 2015-12-21 07:15

Pozostało 580 znaków

2016-07-18 19:05
0

cytat z wikipedi:

Menedżer kompozycji Edytuj
Osobny artykuł: Menedżer kompozycji.
W menedżerze kompozycji okna rysowane są niezależnie od siebie do oddzielnych buforów w pamięci, a następnie składane i wyświetlane w środowiskach 2D lub 3D. Najbardziej zaawansowane menedżery udostępniają szeroki wachlarz efektów wizualnych oraz operacji do zarządzania lub przełączania się między oknami.

@Azarien chyba o tym pisał

Pozostało 580 znaków

2016-07-29 10:58
1

Zdobyłem programistę ;)

user image

Autor: Darek Kwieciński https://github.com/akasei/Cyjon/blob/master/software/bfi.asm


edytowany 1x, ostatnio: akasei, 2017-02-28 21:11
jeszcze tylko przywrócę notatnik Moko i bedę mogł pisać sobie skrypty i je wykonywać :D - akasei 2016-07-29 11:51

Pozostało 580 znaków

2016-07-31 00:46
2

Przywróciłem do życia program Moko (edytor tekstowy) na potrzeby pisania skryptów dla BFi.
Co za tym idzie, zaimplementowałem możliwość zapisu pliku do wirtualnego systemu plików z wstępną obsługą uprawnień, aby nie było prób wykonywania plików tekstowych (co skutkowało Page Fault, system stabilnie zamykał dziwny proces [: ).
user image


Pokaż pozostałe 2 komentarze
@akasei - możesz edytować pierwszy post wątku (tam nadaje się tagi); - furious programming 2016-07-31 03:29
@furious programming nie mam opcji edycji tagów - akasei 2016-07-31 08:09
Hmm... dziwne... W takim razie podaj mi listę tagów i ja je dodam do wątku; - furious programming 2016-07-31 16:00
@furious programming o tych trzech myślę: asm, nasm i os, dzięki - akasei 2016-07-31 17:41

Pozostało 580 znaków

2016-12-26 01:18
4

Witajcie!

title
title

Niewiele zmieniło się z zew. punktu widzenia, ale pod maską jest już pełna obsługa wirtualnych konsol!
Powłoka otrzymała możliwość buszowania po systemie plików (w tym i każdy inny proces).

Prace idą powoli i niezmiernie do przodu. Wersja "stabilna" zawsze do pobrania na stronie głównej projektu.


edytowany 2x, ostatnio: akasei, 2016-12-28 13:32
Pokaż pozostałe 11 komentarzy
@Rev: postaram sie podmienić na nginx. Teraz spać ;) - akasei 2016-12-26 02:02
@Rev, @Patryk27 działa już pod Nginx'em. - akasei 2016-12-26 13:22
#potwierdzamżedziała - Patryk27 2016-12-26 13:27
Wirtualny system plików otrzymał wsparcie dla katalogów . oraz .. - akasei 2016-12-30 13:40

Pozostało 580 znaków

2016-12-26 04:25
Smutny Pomidor
0

Nie szybciej by go było pisać w Rust jak RedoxOS.

Zapewniam, że nie. - akasei 2016-12-26 11:57
Ale po co? Zakładam, że @akasei chce się czegoś nauczyć, pobawić, cokolwiek, a nie robić coś wielkiego jak GNU ;) Wtedy wybór języka to jest jego własna sprawa. - hauleth 2016-12-26 16:52
@winerfresh dokaładnie :) - akasei 2016-12-26 17:23
@akasei przy czym osobiście i tak bym polecił naukę Rusta ;) - hauleth 2016-12-26 17:24

Pozostało 580 znaków

2016-12-28 13:12
1

Czy wykorzystanie generatora liczb pseudolosowych typu LCG do tworzenia nazw plików tymczasowych /tmp jest dobrym pomysłem?

; Copyright (C) 2013-2017 Wataha.net
; All Rights Reserved
;
; LICENSE Creative Commons BY-NC-ND 4.0
; See LICENSE.TXT
;
; Main developer:
;   Andrzej (akasei) Adamczyk [e-mail: akasei from wataha.net]
;-------------------------------------------------------------------------------

; Use:
; nasm - http://www.nasm.us/

; 64 Bitowy kod programu
[BITS 64]

LIBLARY_RAND_A      equ 22695477
LIBLARY_RAND_C      equ 1

;===============================================================================
; wejście:
;   rax - ziarno (np. ilość mikrosekund od daty 1970.01.01 00:00)
liblary_rand_init:
    ; ziarno rozpoczynające ciąg liczb pseudolosowych
    mov qword [liblary_rand_result],    rax

    ; powrót z procedury
    ret

;===============================================================================
; wejście:
;   rcx - modulo (przedział liczby pseudolosowej 0 > rcx < 2^32)
; wyjście:
;   rdx - liczba pseudolosowa
liblary_rand:
    ; zachowaj oryginalny
    push    rax

    ; wykonaj obliczenia liczby pseudolosowej
    mov eax,    dword [liblary_rand_result]
    mul qword [liblary_rand_a]
    add rax,    LIBLARY_RAND_C
    div rcx

    ; zapamiętaj wynik
    mov qword [liblary_rand_result],    rdx

    ; przywróć oryginalny
    pop rax

    ; powrót z procedury
    ret

liblary_rand_a      dd  LIBLARY_RAND_A
liblary_rand_result dq  STATIC_EMPTY

ilość mikrosekund -> liczba - wszak mikrosekundy są policzalne :) - Marooned 2017-01-11 12:01

Pozostało 580 znaków

2016-12-28 13:16
0

@akasei: a co jest złego w tworzeniu plików o nazwach po prostu 1, 2, 3, 4...? ;-P


Pokaż pozostałe 3 komentarze
@Patryk27 Tak, zgadzam się - ale generator ma też swoje plusy... nie mam jeszcze ani jednego :D - akasei 2016-12-28 13:20
Z tego co wiem, ten generator jest stosowany w GNU/Linux /dev/random - akasei 2016-12-28 13:21
Może w /dev/urandom, ponieważ z tego co wiem /dev/random opiera się o większą losowość' niż LCG ;-) - Patryk27 2016-12-28 13:26
@Patryk27: tak naprawdę to AFAIK żaden nie używa LCG, oba używają CSPRNG http://www.2uo.de/myths-about-urandom/ - hauleth 2016-12-29 18:32

Pozostało 580 znaków

2017-01-07 22:47
1

Czy możliwość załadowania do przestrzeni procesu zawartości pliku typu "katalog" jest złym pomysłem?
np. GNU/Linux nie pozwala

[email protected] ~ $ cat cyjon
cat: cyjon: Jest katalogiem

W tym momencie wykorzystuję to np. przy poleceniu ls, bo potrafi zinterpretować zawartość binarną takiego pliku.
Nie wiem dlaczego polecenie cat po prostu nie wyświetla zawartości w postaci ASCII.

Dzięki temu, mógłbym się pozbyć jednej procedury!

AKTUALIZACJA
Dobra, odpowiedziałem sobie na to pytanie podczas pisania od początku programu cat.
Katalog jest plikiem o domyślnym rozmiarze N bloków * 4096 Bajtów (zależnie od ilości plików w nim). Czyli po wysłaniu cat / konsola w większości przypadków zapycha się pustą przestrzenią...

AKTUALIZACJA
Od wersji 0.763 postaram się dostarczać do pobrania wersje zlokalizowane dla EN i PL w końcu to tylko jeden przełącznik w głównym pliku konfiguracyjnym :)

title
title


edytowany 8x, ostatnio: akasei, 2017-01-08 11:54
pliki konfiguracyjne np. /etc/hostname też dostarczać zlokalizowane? - akasei 2017-01-08 01:48

Pozostało 580 znaków

2017-01-14 22:20
3

Wymiękam, nie jestem w stanie zmusić VirtualBox do uruchomienia systemu... zawiesza się podczas kopiowania przestrzeni z 0x20000 do 0x100000 (rozmiar 21KiB).

Bochs i Qemu nie mają z tym problemu, nawet porównałem kod z Pure64 od https://github.com/ReturnInfinity/Pure64, brak znaczących różnic pod względem wartości/zmiennych.

Zawiesza się, gdy skopiuje ponad 4096 Bajtów - gdzieś przed 5120 Bajtów (na pewno nie 4097 i 8 ;) )

Jeśli ktoś wie jak debugować pod VirtualBox, to proszę https://wataha.net/files/cyjon-0.772-en.raw, kopiowanie przestrzeni zaczyna się pod adresem fizycznym/liniowym 0x23A3.

Jeśli chcesz nagrać obraz na Pendrive(USB) to idealny jest do tego program https://sourceforge.net/projects/win32diskimager (MS/Windows).
Pod systemy GNU/Linux:

sudo dd if=cyjon-0.772-en.raw of=/dev/usb_pendrive

PS: pod laptopem EeePC, nie działają(naprawionie) klawisze kierunkowe, nasz zespół do spraw likwidacji bugów, już się tym zajmuje ;]
PS: dziwne numery konsol dla demonów, naprawione :)

Dowód na sprawny system :)
title
title
title


edytowany 9x, ostatnio: akasei, 2017-01-15 14:33

Pozostało 580 znaków

2017-01-17 20:42
3

Przywróciłem sterownik i wykrywanie kontrolera sieciowego, przy okazji usprawniając kod o doświadczenie.

title

W pierwszej kolejności przywrócę obsługę ARP, IP i ICMP. Następnie skupię się na serwerach DHCP i DNS. DHCP nie będzie stanowił problemu - szybki rzut oka i wygląda jak proste zapytania na protokole IP.
title

Staram się jak najszybciej sprawić by Cyjon wykonywał poważne zadania w sieci.

Serwer HTTP poczeka, obsługa stosu TCP musi zostać bardzo dobrze zaprojektowana.

Mając to wszystko, dodam sterownik kontrolera sieciowego Realtek 8169 i sprawdzę w praniu na prawdziwym sprzęcie :)

Było by dobrze znaleźć optymalne rozmiary buforów Ethernet, TCP/IP.


edytowany 5x, ostatnio: akasei, 2017-01-17 21:32

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0