25 Ağustos 2016 Perşembe

Shared Library ve Position Independent Code

işletim sistemi linux ve mimari x86..

load-time esnasında shared libraryler üzerinde nelerin döndüğünden daha önceki yazılarımızda  bahsetmiştik.

yalnız önceki yazılarda bahsetmiş olmamıza rağmen yine de burada tekrarlayalım.

programımızın başlamadan önce çalıştırılmaya hazırlanması için
arkada bir takım senaryolar döner ve  bu senaryolardan biriside load-time relocationdır.

load-time da 10 relocation yapmak oldu bitti ile olmaz,belirli bir zaman harcanarak bu  iş halletilir.evet 10 relocation pek fazla süre almıyacaktır fakat büyük uygulamalarda  relocation sayısı 10 olmayacaktır..

bunu hatırlattıkdan sonra programımızda başlangıc süresini en iyileme için işin erbabları  bir takım yöntemleri shared librarylerde uygulamaya koydular.


18 Ağustos 2016 Perşembe

LOAD-TIME RELOCATION

LOAD-TIME RELOCATION

bu yazımızda shared object fileların LOAD-TIME da nasıl relocation işlemlerinin dynamic linker tarafından yapıldığından elimizden geldiğince bahseticez..

işletim sistemi  program header table içerisinde INTERP segmentini görürse LOAD segmentlerini yükledikten sonra INTERP segmentinde belirtilen dynamic linkerın  kendisinide programın address spacenin içerisine yerleştiriyor.


programın  adress spacenin kendisini ---> cat /proc/proses_id/maps
ya da şu şekilde  ----->  pmap proses_id

görebilirsiniz..


17 Ağustos 2016 Çarşamba

ELF { eXecutable and Linkable Format }

ELF-eXecutable and Linkable format.


ELF,icra edilebilir ve bağlanabilir format olarak türkçeleştirilebilir.peki nedir tam olarak ELF bu yazıda kısaca ELF hakkında konuşucaz.


ELF  executable(çalıştırılabilir),relocatable file,shared libraries için ortak bir formattır.ELF oldukça geniş analiz edilebilir fakat biz burada basit analiz yaparak(bilgimiz dahilinde) en azından bir ELF executable dosya içinde neler dönüyor bunları anlamaya çalışıcaz.


10 Ağustos 2016 Çarşamba

eXecutable formuna dönüş

işletim sistemi linux,compilerımız gnu compiler.


bu aşamaları  örnek üzerinden açıklayalım.

print.c adında bir dosyamız olsun ve bunu içeriği şu şekilde olsun :

#include <stdio.h>
#define name "kernsteinist"
#define  number 10

void main(void)
{

int j;

for(j=0;j<number;j++)            // for girişi
 printf("Hello " name "\n");    /* print baskısı */

}

3 Temmuz 2016 Pazar

SSL / TLS Nedir ? Nasıl Çalışır ?

-----BEGIN-----

SSL/TLS Nedir?

SSL,iki nokta arasındaki haberleşmeyi encrypted bir şekilde yapmayı sağlayan ve ayrıca karşı tarafta haberleştiğiniz kişinin gerçekten de haberleşmek istediğiniz kişi olduğundan emin olmanızı sağlar.

SSL v3.0  geliştirilmiş versionu TLS v1.0  karşılık gelmektedir.TLSin en son versiyonu TLS v1.2 dir.

bu yüzden SSL/TLS olarak da bilinir.

SSL/TLS protokollerinin ne amaça hizmet ettiğini anlamak için basit bir anoloji yapalım.

24 Haziran 2016 Cuma

SSH Nedir ? Nasıl Çalışır ?

SSH kısacası bir network protokolüdür.linux işletim sisteminin bir çok dağıtımında bu protokole ilişkin uygulamalar hazır olarak gelmektedir.windows tarafında ise ssh client programı
olarak putty  programı mevcuttur.(benim bildiğim tabi detaylı araştırabilirsiniz.)

burada ssh protokolü gerçekleştirilirken bir takım programlar kullanılmıştır bunlar linux işletim sisteminde mevcut programlardır.


17 Mayıs 2016 Salı

Kernel Boot Process

[Daha sonra güncellenecek kendime not alırken yazdığım şeyler mevcut.]

x86 mimarisi ve bios ile bootlama süreci ele alınarak anlatım yapılmıştır.

pc ayağa kalkarken işletim sisteminin kernelına nasıl teslim ediliyor,en sade biçimde anlatmaya çalıştım.

aşağıdaki resme bakıcak olursak "kernel" kısmına kadar geliniyor bu yazıda bundan bahsedilecek.




Bilgisayarınızı açmak için düğmeye bastığınızda  ram içerisinde herhangi bir data/instruction(veri/emir)   yoktur ve genelde bilgisayar dünyasında CPU genellikle gider ramin içindeki kodları dataları okur   alır işler tekrar rame yazar bu işlem her bir kullanıcı tetiklemesinde böyle devam eder,



30 Mart 2016 Çarşamba

Builder-Stub Tekniği

Burada anlatılacak Builder-Stub tekniğinin Resource kullanımı ile gerçekleştirilmesidir.kısaca builder stub dan bahsetmek gerekirse; elinizde bir takım bilgiler var bu bilgileri builder aracılığı ile stub dosyanıza yazıyor/yerleştiriyorsunuz,stub kendine eklenen bu bilgiyi alıyor/okuyor ve işliyor.