SİSTEM ÇAĞRILARI PROSES VE İPLİK YÖNETİM ÇAĞRILARI -1-

   Bu çağrılar proses ve iplik oluşturma , bekleme ,sonlandırma , yürütme,ayarlama,bilgi alma ve hata ayıklamayı sağlayan çağrılardır.

Yeni proses oluşturma --->fork()

Yeni iplik oluşturma --->pthread_create(...)

İplik bekleme çağrısı--->pthread_join(...)

Proses bekleme çağrısı --->wait()

Proses sonlandırma çağrısı --->exit(int statu)

Prosesin ID --->getpid()

Anne prosesinin ID si --->getppid()

Kullanıcı ID si--->getuid()

1-YENİ PROSES OLUŞTURMA ÇAĞRILARI

   fork() sistem çağrısı yeni bir proses oluşturur ,kullanılabilmesi için <sys/types.h> ve <unistd.h>
başlık dosyaları program koduna eklenmelidir.Oluşan proses çocuk proses oluşturan ise annedir.

Bu çağrı kullanıldığını anne prosesin birebir kopyası olan bir çocuk proses oluşur.

Anne prosesteki tüm değişkenleri ve kod çocuk prosese kopyalanır her ikisi fork() çağrısından sonraki işlemi yapmaya çalışır.

Fakat ikisinin farklı islemler yapabilmesi için hangi prosesin anne hangi prosesin çocuk olduğu bilinmelidir.

fork() çağrısı çocuk prosese 0 ,anne prosese ise çocuk prosesin tanımlayıcı numarasıyla döner.

#include <iostream>
#include <sys/types.h>
#include <unistd.h>
using namespace std;
int main()

{
pid_t pid; //Dönüş tipimiz
pid=fork(); //Yeni proses oluşturuluyor.

if(pid==0)
   cout<<"Ben Cocuk"<<pid<<endl;
else
cout<<"Ben Anne"<<<pid<endl;

}
2-YENİ İPLİK OLUŞTURMA ÇAĞRISI
  pthread_create(pthread_t sınırlanan iplik,const pthread_attr_t sınırlanan ozellik,void*(*fonksiyon)(void*),void *restrict arg) çağrısı, yeni iplik oluşturmak için kullanılır.

Bu çağrı <pthread.h> kütüphanesi ile kullanılır.

İlk parametresi pthread_t tipinde bir iplik değişkeni

İkinci parametresi özellikleri ve NULL

Üçüncü parametre ipliğin çalıştıracağı fonksiyonu belirten işaretçidir.

Son parametre ise bu ipliğe gönderilecek parametrelerdir.

Derleme aşamasında lpthread opsiyonu belirtilmelidir.

Yukarıdaki proses örneğine iplik ekleyen C++ programını yazalım
  #include <iostream>
#include <pthread.h>
using namespace std;

//İpliğimizin 3.parametresi burada çalıştırmak istediğimizi foksiyonumuzu yazıyoruz
//Asal sayı hesabı olabilir,üslü sayısılarda işlemler olabilir,o sizin keyfinize kalmış artık :)
void *iplik_islemleri(void *i)
{
cout<<"Merhaba ben işaretçi fonksiyonunuzum"<<(int) i<<endl;
}
int main()
{
int iplik_no,i=1;
pthread_t iplik;  //İplik bilgilerimizi tutacak.

iplik_no=phtread_create(&iplik,NULL,iplik_islemleri(*i),(void*)i); //İpliğimizi oluşturuldu

pthread_join(iplik,NULL);
//İpliğimiz sonlanana kadar bekliyor
}

İŞLETİM SİSTEMLERİ SİSTEM ÇAĞRILARI 1

  Kullanıcı programları ile işletim sistemleri arasındaki arayüz işletim sistemleri tarafından desteklenen genişletilmiş komut setiyle sağlanır.Bu komut setine SİSTEM ÇAĞRILARI denir.

İşletim sistemlerinde komutların yürütüldüğü iki farklı uzay bulunur.Bunlardan ilki KULLANICI UZAYI,diğeri ise ÇEKİRDEK UZAYIDIR.

Sistem çağrıları veya bu çağrılara ulaşan komutlar dışındaki tüm komutlar kullanıcı uzayında yürütülür.

Kullanıcı,kullanıcı modunda bir komut işleyeceği zaman bu çekirdek modunda sistem çağrısıyla yapılır.

Sistem çağrısı yapan yazılım işletim sisteminin çekirdeğine yürütmek üzere çağrıda bulunur.

Sistem çağrısının yürütülmesinin ardından kullanıcı uzayına geri dönülür.
.
Çekirdekte bu yürütme işlemine tuzak(TRAP) adı verilir.

İşletim sistemine göre sistem çağrılarının yazım stilleri,kullanımları ve parametreleri değişebilir fakat özellikleri aynıdır.

Günümüzde UNIX,Linux,MINIX,Solaris ve BSD POSIX standardını destekleyen işletim sistemleridir

UYGULAMA--->SİSTEM ÇAĞRISI YAP
--->(SİSTEM ÇAĞRISI(ÇEKİRDEK UZAYINDA)) --->SİSTEM ÇAĞRISINDAN DÖNÜŞ
DİĞERLERİ KULLANICI UZAYINA AİTTİR.

Sistem Çağrılarının Sınıflandırılması

-PROSES VE İPLİK YÖNETİMİ

-SİNYALLEŞME

-DOSYA VE DİZİN YÖNTEMİ

-GÜVENLİK VE ZAMAN YÖNETİMİ

VİZE SORU TAHMİNİ (İSTE) :)

SORU : DÖRT ADET JK FF KULLANARAK DOĞRUDAN SIFIRLAMALI ASENKRON MOD-10 SAYICI TASARLAYINIZ.

ÇÖZÜM :




SQL İNSERT (EKLEME) KOMUTU



Verilen alanlardan herhangi birini doldurmak istemiyorsak,örneğin kitabın yazarını bilmiyoruz,onun yerine NULL değerini atayabiliriz.

SQL OPERATÖRLER (AND,İN,OR,LİKE)















AND OPERATÖRÜMÜZ



OR OPERATÖRÜMÜZ (veyalar arttırılabilir örneğin buna ek olarak or KitapFiyat>40 ta eklenirse
görüntülenecek veri sütunlarımız değişir.)




İN OPERATÖRÜMÜZ



BİR ÖRNEK DAHA...











SQL WHERE KOMUTU


Her zamanki gibi SQL1 veri tabanımızda kitaplik adında bir tablo oluşturup o tabloyu doldurduk.
Sonra select komutu ile tablomuzdaki verileri çağırdık en sonunda da where komutumuz ile işlemler yaptık.


























İYİ ÇALIŞMALAR

SQL SELECT KOMUTU

SQL DROP VE TRUNCATE KOMUTLARI

Drop komutumuzu tablo veya sütun silmede kullanıyoruz.
Truncate komutumuzu ise tablomuzda girdiğimiz verileri silmek için kullanıyoruz.































ARKADAŞLAR ŞİMDİYE KADAR GÖRDÜĞÜMÜZ KOMUTLAR DDL(DATA DEFİNİTİON LANGUAGE) YANİ SQL VERİ TANIMLAMA DİLİ.ÖNÜMÜZDEKİ YAYINLARIMIZDA DML(SQL VERİ İŞLEME DİLİ) KOMUTLARIMIZA GEÇECEĞİZ...

SQL (KODLAMA KISMINA GİRİŞ) CREATE (OLUŞTURMA) KOMUTU



Öncelikle New Query den boş bir sayfa açtık daha sonra create komutumuzla bir veri tabanı oluşturduk bir sonraki görselimizde de tablo oluşturup tablo başlıklarına isim verdikten sonra veri tiplerini belirleyeceğiz.iş,






C# TA VERİ TABANI GÖRÜNTÜLEME (SQL)





using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient; //SQL KÜTÜPHANEMİZİ EKLEDİK
namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
        }
       
        SqlConnection baglan = new SqlConnection("Buraya project kısmından new data source database next dataset next diyip orada connection yazan yerdeki + işaretindeki linki kopyalıyoruz");
        private void verilerimiGoster(){
            baglan.Open();
            SqlCommand komut = new SqlCommand("Select *from Bilgiler"); //Bilgiler tablomuzun ismi
            SqlDataReader oku = komut.ExecuteReader();
            while (oku.Read())
            {
//TABLOMUZU OKUYUP LİSTVİEW İMİZE AKTARIYORUZ
                ListViewItem ekle = new ListViewItem();
                ekle.Text = oku["AdSoyad"].ToString();
                ekle.SubItems.Add(oku["Sehir"].ToString());
                ekle.SubItems.Add(oku["Okul"].ToString());
                listView1.Items.Add(ekle);
            }

    }
        private void button1_Click(object sender, EventArgs e)
        {
            verilerimiGoster();
        }

Spring Boot Uygulamasını Heroku üzerinde Deploy Etme

Bu yazımızda sizlere spring boot ile yazılmış basit bir Rest api'nin heroku üzerinde nasıl deploy edebileceğimizi göstereceğim. Önce ...