Kendimize ait RTOS Yazımı, Multitasking hakkında

Başlatan bunalmis, 08 Ekim 2011, 11:35:31

z

Zaman buldukca hoby calismasi olarak multitasking yapan cekirdek kodlari kendim yazacagim.

Multitasking  temellerini anlatan kitaplari okumak simdilik zoruma gidiyor.  Sorularima verilecek cevaplar isimi kolaylastiracak.

Su anda kafami kurcalayan tek konu tasklar arasi veri aktarimi. (Bu konu, Delphide yazmaya calistigim tasklarda basimi agritmisti)

Bu konudaki bilgileri ozetleyebilirmisiniz?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

Oncelikle mevcut yapilari arastirmak ve kitaplari okumak lazim. Fakat elzem birkonu olmadigi icin simdilik useniyorum.

Bu veri aktarim sekillerinin her birine bir kac satirda aciklama yapilirsa sevinirim.

(Forum agizi ile bu soyle yazilir. Bu baslik altinda bu bilgileri toplayalim derli toplu olsun diger arkadaslar da yararlansin. Projenin son halini yayinlayacagim.)  Yerlerse. :)

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

Bak bir iki ay sonra bir kac satirda yazilabilecek hale getirirsem yazarim ha...
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Seckin ALAN

bunalmış hocam,
multitasking olayı donanımsal değil midir ?
Tek çekirdekli işlemciler ile multitasking ne kadar mümkündür?
iki çekirdekli işlemcide 2 işlemi yapabilmek için iki çekirdeğe bölmek gerekmez mi ?
Multitasking bu değilmidir?
Teşekkür ederim.
Kar taneleri ne güzel anlatıyor, birbirlerine zarar vermeden de yol almanın mümkün olduğunu.. Mevlana

z

Cift cekirdek tek cekirdege gore isleri daha hizlandirir. Cunku gercek anlamda nerede ise paralel islem yapan islemcin var demektir.
Fakat task sayisi ile cekirdek sayisi arasinda alaka kurulmamali.

Kodlarda buyuk degisiklik yapmadan her biri ayri islemcilerde kosacak projelerinizi cok hizli bir islemcide kosacak sekle donusturebilirsin. Yada bir islemcide kosacak karmasik bir programi kucuk parcaciklara bolup her birini ayri tasklar seklinde kosturabilirsin. Boylece program uzerinde degisiklik yaparken diger bolumlerin olumsuz etkilenmesinin onune gecebilirsin.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

mcan


CoşkuN

Alıntı yapılan: bunalmis - 08 Ekim 2011, 12:29:05
(Forum agizi ile bu soyle yazilir. Bu baslik altinda bu bilgileri toplayalim derli toplu olsun diger arkadaslar da yararlansin. Projenin son halini yayinlayacagim.)  Yerlerse. :)

Haha  :D Böyle birşey de var değil mi hakikaten...

controller

Alıntı yapılan: Seçkin ALAN - 08 Ekim 2011, 14:26:21
bunalmış hocam,
multitasking olayı donanımsal değil midir ?
Tek çekirdekli işlemciler ile multitasking ne kadar mümkündür?
iki çekirdekli işlemcide 2 işlemi yapabilmek için iki çekirdeğe bölmek gerekmez mi ?
Multitasking bu değilmidir?
Teşekkür ederim.

Bahsettiğiniz multiprocessing. Multitasking birdenfazla işlemin tek cpu kaynağını paylaşması.

Hesabım OG tarafından haksız bir şekilde pasif yapılmıştır.

z

@Gerbay

Multitaskingle aslinda isim yok. Tasklar arasi veri aktarimi problemi hosuma gitti. Bu problemle ugrasmak istedim.  Hoby iste.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

@Gerbay, Zorluk acisindan ikisi arasinda fazla bir fark yok gibi.
------------------------------------------------------------------------------

En iyisi adim adim gitmek. Oncelikle hic veri aktarimini ise katmadan temel bir  probleme cozum olacak cekirdegi yazmak lazim.

Amerikayi kendim kesfetmeye karar verdim. Elin gavuru ne yapmisla ilgilenmeyecegim.

Temel problemi soyle tanimliyorum.

A ve B olmak uzere iki islemcimiz farkli iki program kosturmaktadir.

Bu islemciler harici clock kaynagi ile beslenmekte fakat, harici clock donanimi her 10ms de sadece  bir islemciyi beslemektedir. Aciklamak gerekirse A islemcisi 10ms boyunca kod kostururken B islemcisi beklemekte, 10ms sonunda A islemcisi beklemekte ve bu kez B islemcisi kod kosturmaya baslamaktadir.

Simdi, elimizde A ve B den en az iki kat hizli, bol portlu bir islemci olsun.  Bu islemci uzerinde A islemcisine ait olan kodlari kosturalim, 10ms sonunda A kodlarinin isletimine ara verip B islemcisine ait kodlari kosturalim ve bu boyle devam etsin...

Bu multitask programlamanin en basit hali gibi gorunuyor.

A ve B arasinda herhangi bir veri aktarimi yok, A ve B ayni cevre birimlerini kullanmiyor.

Mesela P1 portu A yazilimina, P2 portu B yazilimina ayrilmis olsun. Ramda 0x1000....0x1FFF, A yazilimina, 0x2000...0x2FFF, B yazilimina ait olsun gibi.

A ve B islemcilerinin islettigi  kodlari tek bir islemcide isletmeyi becerdikten sonra bir sonraki problemimiz A ve B islemcilerinin clock kaynagindaki dur kalki kaldirmak ve ayni performansi tek islemcili sistemde elde etmek ve mesela A ve B islemcilerinin port pinlerini yazilimla Toggle ederek duduk otturmek probleminin aynisina tek islemcili yapida cozum getirmek olabilir.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

Cekirdek kodlarinin yaziminda C ciler ASM'den medet ummak zorundalar diyebilirmiyiz acaba?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

mufitsozen

Alıntı yapılan: bunalmis - 09 Ekim 2011, 14:08:50
Cekirdek kodlarinin yaziminda C ciler ASM'den medet ummak zorundalar diyebilirmiyiz acaba?

Hayir.
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

z

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

mcan

Basit olarak contex saving olayini c kullanip asm kullanmadan nasil yapabiliriz?

z

Malesef Gerbay malesef. Bugune kadar tanidigim sozde C cilerin alayi takım tutma fanatikliğinde C tutuyor ASM den nefret ediyor.


Bana e^st de diyebilirsiniz.   www.cncdesigner.com