"In the sixth month of Elizabeth’s pregnancy, God sent the angel Gabriel to Nazareth, a village in Galilee, 27 to a virgin named Mary. She was engaged to be married to a man named Joseph, a descendant of King David." (Luke 1:26-27 New Living Translation)
A lot of assumptions and speculations have been made about Mary over time. The truth is we don't know a whole lot about her other than her character and faith.
Luke sets the appearance of Gabriel at a specific time, six months into Elizabeth's pregnancy. Mary lived in Nazareth, a village in Galilee. Most of the Galileans were working class people with little formal education. So the elite in Jerusalem looked down on them as "second class" people who talked with an accent.
Mary was a virgin when Gabriel visited her, when Joseph married her, and when Jesus was born. The Gospels don't say that Mary remained a virgin for the rest of her life. They do tell us that Jesus had brothers and sisters.
Luke doesn't tell us a lot about Joseph either, other than he was engaged to Mary and was a descendant of King David. Mary and Joseph were not living together. Since Joseph would be considered Jesus' legal father, it was important that Joseph was a descendant of David because God promised David that the Savior would come from his family tree.
Mary and Joseph were ordinary people who believed in and followed the Lord. God works with, in, and through ordinary people of faith. He will never set us up for failure by ask us to do something without giving us the help we need. We might be surprised by what happens when we say "Yes!" to the Lord. He does amazing things through ordinary people.